CodeIgniter POST переменные - PullRequest
5 голосов
/ 23 марта 2011

Кто-нибудь знает, почему:

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
    }
}

Будет выводить переменные в CI для $ _POST, но НЕ для $ this-> input-> post ();?

У меня есть$ this-> input-> post () используется и работает на странице поиска в другом месте сайта ... но на этой странице он не работает .. вот моя форма ...

<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>

Это психическое ;-p Кто-нибудь заметит что-то явно глупое, что я скучаю?

Ответы [ 3 ]

4 голосов
/ 23 марта 2011

Скорее всего, у вас включен XSS или CSRF, и он запрещает (угадывая здесь) Paypal возвращать вам эту информацию.

Это типично для CodeIgniter, и есть некоторые обходные пути, такие как исключение CSRF для некоторых контроллеров (через config или hook).

Если вы дадите более подробную информацию о том, откуда исходит POST, я могу ответить немного чётко.

редактировать

может быть, вы звоните $this->input->post() неправильно? Я знаю, что в CI2.1 добавлена ​​поддержка $this->input->post() для возврата полного массива, но до этого момента вам приходилось явно определять переменную post, которую вы хотели ala:

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

2 голосов
/ 28 мая 2013

Я решил проблему с исключением защиты CSRF для этого конкретного метода

Вы можете добавить этот код в application / config / config.php

if(stripos($_SERVER["REQUEST_URI"],'/Booking/send_instant_to_paypal') === FALSE)
{
    $config['csrf_protection'] = TRUE;
}
else
{
    $config['csrf_protection'] = FALSE;
}
0 голосов
/ 24 марта 2011

Единственное, о чем я могу думать сейчас, это то, что вы, возможно, не загружали помощник по форме, но я не уверен, что он используется для этого. Вы можете сделать это в /config/autoload.php

У меня, например, есть это:

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

вы также можете загрузить его в свою функцию следующим образом:

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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...