【问题标题】:PHP sessions won't destroyPHP 会话不会破坏
【发布时间】:2013-11-10 21:03:40
【问题描述】:

我在尝试销毁会话时遇到问题 他们似乎被摧毁了,

但是如果我单击后退按钮,变量会返回,因为应该隐藏的页面区域变为 又见了,

网站的这一部分是用于管理 该网站的前面部分也有一个登录,但这不会发生

管理部分的索引页面位于子文件夹中,我有一个名为 notLoggedIn.php 的文件,我将其包含在我想锁定管理员的页面上,notLoggedIn.php 测试是否存在在登录时设置的会话

当我注销时,单击返回按钮,这确实有效,它会将我重定向回管理索引,但现在它再次显示我的用户名,然后我无法重新登录???

我试过了

 $_SESSION = array()

if (isset($_COOKIES[session_name()])) { 
$params = session_get_cookie_params();
setcookie(session_name(), '', 1, $params['path'], $params['domain'], $params['secure'], isset($params['httponly']));
}
session_destroy()

按名称取消设置会话

正如我所说,这不会发生在网站的其他部分...有什么建议吗?

【问题讨论】:

  • 这是您正在使用的“实际”代码,首先为$_SESSION = array()session_destroy() 添加结束分号

标签: php session


【解决方案1】:

有时问题是在调用session_destroy() 之前忘记了session_start()

【讨论】:

    【解决方案2】:

    感谢您抽出宝贵时间,但这似乎是一个 WAMP 问题
    一旦我使用了 MAMP,或者实时上传,到目前为止,还没有出现这个问题。

    再次感谢

    【讨论】:

      【解决方案3】:

      刷新页面时会出现这种情况吗?我的第一个问题是您会看到浏览器缓存的页面。尝试在用户登录时/之后将其添加到您的页面:

      header('Cache-Control: no-cache, no-store, must-revalidate');
      

      【讨论】:

      • 太棒了,我的浏览器正在缓存我认为的会话。很好的修复。
      【解决方案4】:

      浏览器可以缓存整个页面的 html 并且只显示本地内存中的页面,甚至不发送请求,更不用说在服务器上执行 php 脚本了。

      这是关于缓存,它受请求类型 (GET/POST) 的影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-02
        • 2012-07-19
        • 2013-10-31
        • 2010-10-05
        • 2016-04-30
        • 2013-02-12
        • 1970-01-01
        相关资源
        最近更新 更多