1

我一直在尝试使用 Codeigniter 处理会话,但我仍然发现每次刷新浏览器都会创建一个新会话......这没有任何意义。我尝试删除所有会话,然后我得到一个新会话,有人看到这个错误吗?

这是我的代码:

$this->load->library('session');
print_r  ($this->session->all_userdata());
$this->session->sess_destroy();

因此,使用 sess_destroy 我删除了会话,但是当我刷新站点时,会出现一个新会话。

4

2 回答 2

2

嗯,很确定 sess_destroy 会破坏旧的会话,所以你当然会在刷新时得到一个新的会话!

编辑:

在 Session.php 快速达到峰值后确认

/**
 * Destroy the current session
 *
 * @access  public
 * @return  void
 */
function sess_destroy()
于 2012-07-10T18:46:21.083 回答
2

您描述的是默认和正常行为。请参阅“会话如何工作?” CodeIgniter 用户指南的会话类章节中的部分。它说:

如果会话数据不存在(或已过期),则会创建一个新会话并将其保存在 cookie 中。

前提是之前已经启动了 Session 类,使用

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

这里到底是什么情况。

如果您担心安全性,请不要担心。新会话不会继承前一个会话的数据。

最后,如果由于某种原因您想销毁会话并有条件地启动它,请检查它是否存在:

if($this->session->userdata('username') === FALSE )

如手册所述:

注意:如果您尝试访问的项目不存在,该函数将返回 FALSE(布尔值)。

于 2012-07-10T19:22:28.857 回答