会话超全局数组

时间:2014-08-10 14:47:58

标签: php superglobals

我刚注意到session_destroy()似乎对我不起作用。

测试PHP代码如下所示:

session_start();
session_destroy();
$_SESSION['session'] = 'session started';
print_r($_SESSION);

但显示屏仍显示

Array ( [session] => session started)

当然SESSION变量现在不存在会引发错误吗?

1 个答案:

答案 0 :(得分:2)

session_destroy会破坏已保存的会话数据 - 在大多数情况下,这是会话文件。

但是,它不会影响会话变量本身。

因此,只要您处于同一请求中,就可以继续使用$_SESSION超全局及其以前的所有值。要完全破坏它,你应该使用:

foreach(array_keys($_SESSION) as $k) unset($_SESSION[$k]);

或代码效果类似。

也就是说,这并不重要 - 会话将被销毁,通常只会在注销页面上执行此操作,这些页面只会在将用户发送回主页之前短暂显示。