【发布时间】:2014-05-15 20:55:16
【问题描述】:
我正在本地主机上开发一个应用程序,使用:
谷歌浏览器 33.0.1750.154 m
XAMPP 版本 1.8.3
我已经使用了一段时间了,今天突然间当我关闭浏览器(所有窗口)时,Chrome 没有清除 session cookies,即使我重新启动机器后,session cookies 仍然设置为上次会议。
我的页面顶部有这段代码:
<?php
session_start();
if(!isset($_SESSION['userID']))
{
echo "<script>alert('Username does not exist')</script>";
echo '<script type="text/javascript"> window.location="login.html";</script>';
exit(1);
}
?>
效果很好,在关闭浏览器后将我重定向到登录页面,直到几个小时前。
注意:
测试了 IE10、IE11 和 FF,它们没有表现出相同的行为,它们按预期清除了 session cookies。
我也验证了
从我离开的地方继续...
设置未选中。
有人知道这里发生了什么以及如何解决吗?
【问题讨论】:
-
当您关闭浏览器时,听起来 chrome 并没有清除您的会话 cookie。
-
浏览器无法“清除”会话变量。他们无法直接访问 $_SESSION。他们可以清除会话 ID cookie,给他们一个全新的空会话,或者您的服务器端代码必须清空 $_SESSION。
-
@KevinB 这是已知的错误吗?如何强制它清除会话 cookie?
-
这不是错误,而是浏览器设置。不过,我找不到它,也许在浏览器关闭时更改 cookie 行为的选项现在在 chrome 中消失了?
-
如果其他浏览器真的清除SESSIONS,那么互联网就有问题了……你打电话给五角大楼、克里姆林宫和联合国安全委员会?不过说真的,Sessions 存在于服务器上。浏览器唯一拥有的是一个 cookie,它告诉服务器使用哪个会话。如果没有找到这样的 cookie,则创建一个新会话,并且客户端将收到一个新的 cookie。如果该 cookie 未被接受或被删除,那么这就是导致该行为的原因。这不是 PHP 的错,也不是 chrome 的错。这听起来像是浏览器设置问题(也许禁用私人浏览?)
标签: javascript php google-chrome session