【问题标题】:Codeigniter session destroy after redirect重定向后 Codeigniter 会话销毁
【发布时间】:2013-10-06 23:19:05
【问题描述】:

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

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

还附上了重定向前的快照。

【问题讨论】:

  • 你是在控制器的开头做 session_start 吗?

标签: php codeigniter session


【解决方案1】:

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

system/libraries/Session/session.php

转到第 281 行

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

将 session.name 替换为 session.id

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

       $config['sess_match_useragent']=FALSE
      

      【讨论】:

        【解决方案4】:

        你的配置是什么 应用程序/config/config.php

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

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

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

        【讨论】:

          【解决方案5】:

          请删除以下行并尝试

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

          【讨论】:

          • 我已经尝试过了,但是没有用。删除它的逻辑是什么?
          猜你喜欢
          • 1970-01-01
          • 2018-12-05
          • 2016-04-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-22
          • 1970-01-01
          • 2022-08-20
          • 1970-01-01
          相关资源
          最近更新 更多