为什么我的会话仍然存在?

时间:2011-02-07 12:24:07

标签: php

我一定是非常愚蠢的,因为这似乎是一个相当明显的事情,现在让我感到困惑。

我有一个会议......

$_SESSION['handbag_id'];

并且在某个时刻,我需要彻底杀死这个会话。

// at the start of the page
session_start();

// elsewhere on the same page
unset($_SESSION);
session_destroy();

然而,我可以转到另一页,并做一个

echo $_SESSION['handbag_id'];

我仍然和以前一样拥有同样的handbag_id。

我错过了什么?难道我不明白这是如何工作的,或者我是否有一些服务器设置对我摧毁其价值的欲望至关重要?

3 个答案:

答案 0 :(得分:3)

不要这样做

unset($_SESSION);

这样做

$_SESSION = array();

最后

session_destroy();

答案 1 :(得分:3)

会话功能可能非常棘手。要完全终止会话,您需要为$_SESSION超全局分配新值。否则,您所做的只是从当前脚本卸载会话数据。这应该有效:

session_start();
$_SESSION = array();
session_write_close(); // Not required

如果您还需要打开一个全新的会话,您可以这样做:

session_regenerate_id(FALSE);
$tmp = session_id();
session_destroy();
session_id($tmp);
unset($tmp);
session_start();

<强>更新

您可能会觉得有用的相关问题:Close session and start a new one

答案 2 :(得分:0)

在打印前使用session_comitt,看看魔术:)