firefox会自动保存会话

时间:2012-12-16 13:52:31

标签: php session firefox

  

可能重复:
  Firefox session cookies

我有这段代码

session_start();

$_SESSION['login'] = "bla";

var_dump($_SESSION);

如果我在firefox中执行此页面,然后从脚本中删除此行$_SESSION['login'] = "bla";,然后关闭并重新打开浏览器,firefox会显示:["login"]=> string(3) "bla"

也就是说,firefox在关闭浏览器后保存会话数据。为什么会这样?

P.S。这只发生在firefox中,其他浏览器都按预期工作,结果是空数组。

2 个答案:

答案 0 :(得分:0)

您确定要测试脚本的正确版本吗?您可能希望在测试脚本中添加其他内容以确保,例如, echo 当前时间。

这里可能出现的一种情况是浏览器的所有实例共享相同的cookie jar。为了强制浏览器删除会话cookie,您必须关闭所有窗口和标签。这在“现实生活”中从来都不是问题,但是当你似乎无法登出时,它往往会让开发人员感到疯狂!

答案 1 :(得分:0)

Firefox无法保存$ _SESSION。 $ _SESSION完全是服务器端变量。除了它将设置一个会话cookie之外,它不会出现在Firefox中,只有php才能在服务器上找到正确的用户会话。

您获得["login"]=> string(3) "bla"的原因是因为您在第一次运行中设置了它。这样做:

首先运行脚本

session_start();

$_SESSION['login'] = "bla";

var_dump($_SESSION);

然后从脚本中删除$_SESSION['login'] = "bla";行并运行它。它仍应显示登录密钥在会话变量中设置。然后运行一个单独的脚本:

session_start();

$_SESSION['login'] = null;
// OR 
// unset($_SESSION['login']);

var_dump($_SESSION);

然后尝试查看Session变量的值,并且'login'键的值将消失。

我的意思是:如果您在会话中设置某些内容,它将保持不变,并且您不必在每次运行脚本时都设置它。要从会话变量中删除值,您必须显式删除它。