我正在使用以下方式在localhost上开发应用程序:
Google Chrome 33.0.1750.154 m
XAMPP版本1.8.3
我现在已经使用了一段时间了今天,当我关闭浏览器(所有窗口)时,即使重新启动我的机器后,Chrome也没有清除session cookies
,{{1仍然从上一个会话设置。
我的页面顶部有以下代码:
session cookies
哪个工作正常,在浏览器关闭后将我重定向到登录页面,直到几个小时前。
注意:
测试IE10,IE11和FF并且它们没有表现出相同的行为,它们正在按预期清除<?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);
}
?>
。
我还验证了
继续我离开的地方......
设置未选中。
答案 0 :(得分:25)
感谢KevinB指出我正确的方向。
原来并不像我想的那样设置了cookie,我最终保留了这个设置:
允许设置本地数据(推荐)
我记得我的机器上最近安装了
最终解决此问题的方法是取消选中:
在Google Chrome关闭时继续运行后台应用
设置 SYSTEM 部分。
希望这有助于避免一些麻烦......
答案 1 :(得分:1)
“继续运行后台应用程序”选项可能有效,但我们不能期望用户(客户端)使用其Chrome网络浏览器执行此操作。 我的解决方案如下: 他们单击“注销”按钮-将他们带到一个纯PHP(无html代码)的页面,该页面已编写脚本:
<?php
session_start();
$_SESSION=array();
$cookie_parameters=session_get_cookie_params();
setcookie(session_name(),'',time() -86400,$cookie_parameters['path'],
$cookie_parameters['domain'],$cookie_parameters['secure'],$cookie_parameters['httponly']);
session_destroy();
header('Location: logout_exit.php');
?>
代码的“标头”部分将它们(立即)带到“ logout_exit.php”页面(您可以随心所欲地命名页面,并且可以具有.html扩展名而不是.php) 而且此页面是纯html(没有php!)。现在,如果您在Chrome浏览器中查找Cookie,您会发现Cookie仍然存在!但是请点击以下图片: Chrome shows cookie deleted, but still there!
魔术将在您的logout_exit.php页面(位于html代码的标题部分)中添加一个meta标记,如下所示:
<meta http-equiv="refresh" content="30">
强制浏览器自动刷新(30 = 30秒,但选择所需的任何值)。刷新后,如果现在使用Chrome浏览器,它会显示“ Cookies(正在使用0个)”,如果您单击该消息,则表明该cookie确实已清除。