我在会话中添加订单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.
}
还附加了重定向之前的快照。
答案 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']);