在chrome中清除php $ _SESSION变量

时间:2013-08-19 04:22:09

标签: php google-chrome

我写了一个带登录机制的php网站。当用户使用正确的用户名和用户密码时,php会给他/她一个$ _SESSION ['userid']。

在index.php中

,我用以下内容检查登录: -

if (!($_SESSION['userid'])){?>
<script>
    window.location='login.php';
</script>
<?php }?>

它长时间工作正常。

最近,我在Chrome中意识到,在短时间内(例如几分钟),浏览器会清除会话变量,因此,无论我刷新页面还是点击导致index.php?XXXX的其他菜单按钮,检查登录java脚本工作,并踢回login.php。但是这样的清算不会发生在firefox和IE上。

我注意到chrome有一些特殊情况,当缺少favicon.ico时,浏览器将执行301重定向,清除所有会话。但我相信我已经通过href =“/ favicon.ico”指定了正确的文件位置,文件存在于根目录中。

参考上文,是否有其他可能的原因可以避免chrome清除会话变量?

2 个答案:

答案 0 :(得分:1)

在输出任何HTML内容/任何内容之前,使用PHP重定向用户:

<?php

if (!($_SESSION['userid'])){
    header('Location: login.php');
}

请注意,在HTTP 1.1中,Location标头必须是绝对URI,但我认为从那时起它就被修改了。尽管如此,它适用于所有主流浏览器。

答案 1 :(得分:0)

你的会话超时怎么样,你甚至设置了这个参数吗?

尝试阅读此答案PHP Session timeout