【问题标题】:firefox automatically saves sessions [duplicate]firefox自动保存会话[重复]
【发布时间】:2012-12-03 19:52:43
【问题描述】:

可能重复:
Firefox session cookies

我有这个代码

session_start();

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

var_dump($_SESSION);

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

即firefox在关闭浏览器后保存会话数据。为什么会这样?

附:这只发生在Firefox中,其他浏览器都按预期工作,即结果是空数组。

【问题讨论】:

标签: php session firefox


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    Firefox 无法保存 $_SESSION。 $_SESSION 完全是一个服务器端变量。它不会出现在 Firefox 中,只是它会设置一个会话 cookie,仅由 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' 键的值将消失。

    我的意思是:如果你在会话中设置了一些东西,它会持续存在,你不必在每次脚本运行时都设置它。要从会话变量中删除值,您必须显式删除它。

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 1970-01-01
      • 2012-07-19
      • 2012-06-21
      • 2017-12-31
      • 2013-05-09
      • 1970-01-01
      • 2013-03-21
      • 2013-09-04
      相关资源
      最近更新 更多