在codeigniter中销毁特定会话

时间:2014-03-17 02:02:16

标签: php codeigniter session

我有一个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只销毁用户会话而不是系统中的每个会话?

3 个答案:

答案 0 :(得分:3)

使用:

$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');

答案 1 :(得分:2)

我相信你可以使用$this来引用CodeIgniter的实例。您还必须指定一个"名称"到您的会话数据(变量),以便能够专门取消它。

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

希望这有帮助。

答案 2 :(得分:1)

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

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