Codeigniter会话在重定向后销毁

时间:2013-09-30 23:00:29

标签: php codeigniter session

enter image description here

我在会话中添加订单ID和购物车项目。如果我在会话中添加2个购物车项目。它工作正常。如果我在会话中添加3个或更多项目的购物车。重定向丢失后的所有数据。 控制器的名称是结帐。

function pay_order($order_id){
    $this->load->helper('url');
    $this->load->library('session');
    $this->load->library('cart');
    $this->load->helper('url');
    $this->load->helper('form');
    $output = $this->cart->contents();
    $output = $this->sort_array($output);
    $list['data'] = $output;
    $list['order_id'] = $order_id;
    $this->session->set_userdata('ses', $list);
    echo '<pre> Session Before Redirect';
    print_r($this->session->userdata('ses'));// all data present.
    redirect('checkout/do_payment');
}
function do_payment(){
    $this->load->helper('url');
    $this->load->helper('url');
    $this->load->library('session');
    $this->load->library('cart');
    $this->load->helper('url');
    $this->load->helper('form');

    $this->load->library('session');
    $this->load->model('customer_model');


    echo 'After redirect<pre>';
    print_r($this->session->userdata('ses'));// does not get any data here.
 }

还附加了重定向之前的快照。

5 个答案:

答案 0 :(得分:4)

您的配置是什么? application / config / config.php

如果是的话 $ config ['sess_use_database'] = FALSE;

这意味着您将会话信息存储在cookie中,限制为4kb。 可能这就是问题所在。将大量数据存储在数据库中。

http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

答案 1 :(得分:1)

请删除以下行并尝试

 $this->load->model('customer_model');

答案 2 :(得分:1)

我有同样的问题并通过禁用会话用户代理检查来解决它:

 $config['sess_match_useragent']=FALSE

答案 3 :(得分:0)

  

可能是php / codeigniter版本问题,请使用较低版本的php(如5.3)或升级您的codeigniter版本,您的问题将得到解决。

答案 4 :(得分:0)

我通过更新 codeigniter 代码会话管理器中的会话写入和读取解决了这个问题。

system/libraries/Session/session.php

转到第 281 行

ini_set('session.name', $params['cookie_name']); 

用 session.id 替换 session.name

ini_set('session.id', $params['cookie_name']);