首页 > 解决方案 > PHP用户会话不在选项卡之间持续存在

问题描述

我遇到了一个我以前从未见过的问题。我将登录的用户会话信息存储在一个$_SESSION['user']变量中(就像我在所有其他站点上所做的那样。)但是当我在另一个选项卡中打开该站点时,在同一个 Chrome 浏览器窗口中,会话不会保留在该选项卡中。我在一个选项卡中注销,然后在另一个选项卡中登录。这让我感到困惑,因为我确信用户会话是浏览器级别的,而不是选项卡级别的。这是 Chrome 的正常干净安装,没有扩展。

我可以很好地在已登录的选项卡上导航,进行硬刷新并清除缓存,所有这些好东西,并且仍然保持登录状态。但是在它旁边的选项卡中,我可以根据需要多次刷新并导航到各种页面,但仍处于注销状态。我可以在两个选项卡之间切换并同时导航它们——但问题仍然存在。

session_start()在每一页的开头都有。我什至在网站的页脚中呼应了用户会话,果然,它完全填充在一个选项卡中,而另一个选项卡完全不存在。

编辑:为了确认,我在我的域上创建了一个简单的 test.php,其中包含以下代码:<?php session_start(); echo $_SESSION['user']['uid']; ?>。我完全退出了我的会话。我在两个单独的选项卡中打开了我的网站。我登录到一个标签。然后,我在两个选项卡中将 /test.php 添加到我的 URL 中。在第一个选项卡中,我得到了一个空白页。在第二个中,我得到了 1(我的用户 ID)。多次硬刷新后,空白选项卡仍为空白,即使多次硬刷新,“1”页面仍为“1”。如何防止这种行为?用户很可能希望使用多个选项卡进行导航,而这种行为正在阻止这种情况。

有人能想到这可能发生的任何原因吗?

标签: phpsessionuser-accounts

解决方案


推荐阅读