2013-09-21 3 views
0

Значение сеанса, потерянное после перенаправления. I m перенаправление из метода pay_order в метод do_payment. когда я печатаю значение сеанса в методе do_payment, его возвращает false. простое вызов метода do_payment отображает значение сеанса. Пожалуйста, помогите, в чем проблема с перенаправлением ..?После того, как сеанс переадресации потерян в кодеигниторе

function pay_order($order_id) 

{ 
       $this->load->helper('url'); //loading url helper  
       $this->load->library('session');//loading session lib 
       $this->load->library('cart'); //loading cart lib 
       $this->load->helper('form');//loading form helper 
       $output = $this->cart->contents();// getting data from cart. 
       $output = $this->sort_array($output);// sorting the array 
       $list['data'] = $output; 
       $list['order_id'] = $order_id; 
       $this->session->set_userdata('abc', $list);// setting the session 
       redirect('checkout/do_payment'); // redirecting to do_payment 

    } 
    function do_payment() 
    { 

      $this->load->helper('url'); //loading url helper 
      $this->load->library('session'); //loading session library 
      $arr = $this->session->userdata('abc');// getting session data in $arr 
      var_dump($arr);// return false value. 
      //$this->load->view('order/pay_through_gateway'); 
    } 

Когда я перенаправляюсь из метода pay_order, сеанс недоступен в методе do_payment. Зачем?

+1

Да, на что указал Ритеш. И - вы помещаете содержимое корзины в сеанс? – cartalot

+0

Да, я помещаю товары в сеанс. ? но не смог получить все после перенаправления. –

+0

@MuhammadDanish на методе 'do_payment' показывают сеанс следующим образом:' print_r ($ this-> session-> userdata); 'и показать нам результаты –

ответ

1

Возникла проблема, проверьте линию в методе pay_order(), где вы устанавливаете сеанс.

$list['order_id'] = $order_id 
$this->session->set_userdata('abc', $list);// setting the session 

Перед этой линией вы пропустили точку с запятой. И все выглядит хорошо.

Update:

Там нет ошибки, как я думаю, проверьте, можете ли вы иметь нулевое значение, в то время как вы храните значения в сессии. И проверьте значения, выполнив следующий код в методе do_payment().

function do_payment(){ 
    $this->load->library('session'); //loading session library 
    $arr = $this->session->userdata('abc');// getting session data in $arr 
    print_r($arr);// print the $arr content 
} 
+0

Ritesh Я не пропускаю точку с запятой. ошибочно удалил меня во время вопроса. –

+0

Код теперь работает нормально. Я очистил данные браузера. может быть из-за того, что файлы cookie совпадают. Но когда я использую session_data как имя объекта сеанса. Он снова не сохраняет сеанс. –

0

Изменить это:

$list['order_id'] = $order_id 

Для этого:

$list['order_id'] = $order_id; 

У вас есть точка с запятой отсутствует. Вы не видите никаких ошибок из-за перенаправления.

+0

Я не пропускаю точку с запятой. ошибочно удалил меня во время вопроса. –

Смежные вопросы