【问题标题】:Destroy a specific session in codeigniter销毁 codeigniter 中的特定会话
【发布时间】:2014-03-17 02:02:16
【问题描述】:

我有一个 codeigniter 应用程序,我正在使用 Cart 类创建一个电子商务商店。

我还使用 Codeigniter-Auth(一个库)在这个系统上创建帐户。我注意到,当我在测试应用程序时注销时,购物车的会话数据也被破坏了。

我在库中注意到这是用户登录的方式:

$data = array(
  'id' => $row->id,
  'name' => $row->name,
  'email' => $row->email,
  'loggedin' => TRUE
);

$this->CI->session->set_userdata($data);

这就是它注销用户的方式:

return $this->CI->session->sess_destroy();

如何告诉 codeigniter 只销毁用户会话而不是系统中的每个会话?

【问题讨论】:

    标签: php codeigniter session


    【解决方案1】:

    使用:

    $data = array(
      'id' => $row->id,
      'name' => $row->name,
      'email' => $row->email,
      'loggedin' => TRUE
    );
    
    $this->session->set_userdata($data); // instead of $this->CI->session->set_userdata($data);
    

    您实际上是在设置 4 个会话变量!要取消设置特定的,请使用:

    $this->session->unset_userdata('loggedin');
    

    【讨论】:

    • 你最好的,谢谢!
    【解决方案2】:

    我相信你可以使用$this 来引用 CodeIgniter 的实例。您还必须为您的会话数据(变量)分配一个“名称”,以便能够专门取消设置它。

    $this->session->set_userdata('sample_userlog',$data);
    $this->session->unset_userdata('sample_userlog');
    

    希望这会有所帮助。

    【讨论】:

    • 这似乎不是取消设置会话。
    【解决方案3】:

    文档说明清除当前会话使用 $this->session->sess_destroy(); 注意:这个函数应该是最后一个调用的,甚至 flash 变量也将不再可用。如果您只想销毁某些项目而不是全部,请使用 unset_userdata()。

    例如 $this->CI->session->unset_userdata($data)。

    【讨论】:

    • 这似乎不是取消设置会话。我试图查看错误,但我不能。
    猜你喜欢
    • 2012-03-22
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    相关资源
    最近更新 更多