【问题标题】:php $_SESSION variable being cleared in chromephp $_SESSION 变量在 chrome 中被清除
【发布时间】:2013-08-20 19:26:33
【问题描述】:

我写了一个带有登录机制的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清除session变量吗?

【问题讨论】:

    标签: php google-chrome


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      尝试阅读此答案PHP Session timeout

      【讨论】:

        猜你喜欢
        • 2017-12-12
        • 1970-01-01
        • 2012-02-24
        • 2013-12-25
        • 2010-12-09
        • 2018-05-16
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多