2011-03-23 11 views
5

Alguien sabe por qué:Código variables POST encendedor

 
class Booking extends Controller { 

    function booking() 
    { 
     parent::Controller(); 
    } 

    function send_instant_to_paypal() 
    { 
     print_r($_POST); 
     echo '<hr />'; 
     print_r($this->input->post()); 
     echo '<hr />'; 
     $id_booking = $this->input->post('id_booking'); 
     $title = $this->input->post('basket_description'); 
     $cost = ($this->input->post('fee_per_min') * $this->input->post('amount')); 
     echo $id_booking; 
     echo $title 
     echo $cost 
    } 
} 

se hará eco de las variables de correos en CI por $ _POST pero no para $ this-> input-> post() ;?

Tengo $ this-> input-> post() en uso y trabajando en una página de búsqueda en otro lugar del sitio ... pero en esta página, no funciona ... aquí está mi formulario ... .

 
<form id="add_funds" action="' . site_url('booking/send_instant_to_paypal') . '" method="post"> 
<input type="text" name="amount" id="amount" value="" /> 
<input type="hidden" name="id_booking" id="id_booking" value="0" /> 
<input type="hidden" name="basket_description" id="basket_description" value="Adding Credit" /> 
<input type="hidden" name="fee_per_min" id="fee_per_min" value="' . $fee_per_min . '" /> 
<input type="submit" value="Add to basket" /> 
</form> 

Se mentales ;-P cualquier lugar nada obviamente estúpida me falta?

+0

CI2.1 o CI1.X? Parece CI1, lo que significa que su llamada a '$ this-> input-post()' es incorrecta – Jakub

Respuesta

4

Lo más probable es que tenga habilitado XSS o CSRF y le prohibirá (adivinar aquí) a Paypal que le devuelva esos detalles.

Esto es típico de CodeIgniter, y hay algunas soluciones como excluir CSRF para ciertos controladores (a través de config o hook).

Si proporciona más detalles sobre dónde viene el POST, puedo responder un poco con claridad.

edición

podría ser que está llamando $this->input->post() incorrectamente? Yo sé que CI2.1 añadido soporte para $this->input->post() a devolver la matriz completa, pero hasta este punto había que definir explícitamente la variable de entrada que quería ala:

$user = $this->input->post('username');

+0

Para ser sincero, PayPal todavía no está en el bucle (será). Todo lo que hago es cargar el formulario en una vista y publicarlo en el controlador/método proporcionado anteriormente. No pasa nada más ... Lo he desglosado también por lo básico .. :-( – Beertastic

+3

Sospecho que está confundiendo la documentación CI2.1 (guía de usuario) con una versión CI1.X, así que $ this-> input -> post() no devolverá una matriz por ti. Mira aquí en el último registro de cambios: http://codeigniter.com/user_guide/changelog.html – Jakub

+0

De hecho, ese fue un error de novato ... Sin embargo, estaba agregando explícitamente Publicar variables, a las que he agregado mi primera publicación. Estas variables NO se hacen eco ... No puedo entender por qué ... – Beertastic

0

Lo único que se me ocurre en este momento es que tal vez no cargó el formulario de ayuda, pero no estoy seguro de si se está utilizando para eso. se puede hacer esto en el /config/autoload.php

que por ejemplo tiene esto:

$autoload['helper'] = array('url', 'form', 'html', 'site_helper', 'upload_helper'); 

también se puede cargar en su propia función de la siguiente manera:

function send_instant_to_paypal() 
    { 
     $this->load->helper('form'); 
     print_r($_POST); 
     echo '<hr />'; 
     print_r($this->input->post()); 
     echo '<hr />'; 
     $id_booking = $this->input->post('id_booking'); 
     $title = $this->input->post('basket_description'); 
     $cost = ($this->input->post('fee_per_min') * $this->input->post('amount')); 
     echo $id_booking; 
     echo $title 
     echo $cost 
    } 
2

he resuelto el problema con exclusión Protección CSRF para ese método en particular

puede agregar este código en application/config/config.php

if(stripos($_SERVER["REQUEST_URI"],'/Booking/send_instant_to_paypal') === FALSE) 
{ 
    $config['csrf_protection'] = TRUE; 
} 
else 
{ 
    $config['csrf_protection'] = FALSE; 
} 
Cuestiones relacionadas