php - PHP用户会话不在选项卡之间持续存在
问题描述
我遇到了一个我以前从未见过的问题。我将登录的用户会话信息存储在一个$_SESSION['user']
变量中(就像我在所有其他站点上所做的那样。)但是当我在另一个选项卡中打开该站点时,在同一个 Chrome 浏览器窗口中,会话不会保留在该选项卡中。我在一个选项卡中注销,然后在另一个选项卡中登录。这让我感到困惑,因为我确信用户会话是浏览器级别的,而不是选项卡级别的。这是 Chrome 的正常干净安装,没有扩展。
我可以很好地在已登录的选项卡上导航,进行硬刷新并清除缓存,所有这些好东西,并且仍然保持登录状态。但是在它旁边的选项卡中,我可以根据需要多次刷新并导航到各种页面,但仍处于注销状态。我可以在两个选项卡之间切换并同时导航它们——但问题仍然存在。
我session_start()
在每一页的开头都有。我什至在网站的页脚中呼应了用户会话,果然,它完全填充在一个选项卡中,而另一个选项卡完全不存在。
编辑:为了确认,我在我的域上创建了一个简单的 test.php,其中包含以下代码:<?php session_start(); echo $_SESSION['user']['uid']; ?>
。我完全退出了我的会话。我在两个单独的选项卡中打开了我的网站。我登录到一个标签。然后,我在两个选项卡中将 /test.php 添加到我的 URL 中。在第一个选项卡中,我得到了一个空白页。在第二个中,我得到了 1(我的用户 ID)。多次硬刷新后,空白选项卡仍为空白,即使多次硬刷新,“1”页面仍为“1”。如何防止这种行为?用户很可能希望使用多个选项卡进行导航,而这种行为正在阻止这种情况。
有人能想到这可能发生的任何原因吗?
解决方案
推荐阅读
- javascript - 过滤值列表
- ruby - 使 Ruby 对象响应双 splat 运算符**
- jquery - 如何在j查询数据表中的列标题旁边显示一个圆圈
- javascript - unshift 方法不断在选择器中推送新对象
- apache-kafka - 哪个 ZooKeeper 与 Apache Kafka 一起使用?
- c# - hackerrank 中的 ArrayIndexOutOfBounds 异常
- sql - 重新排序 SQL 数据(足球数据)
- vue.js - 如何在 VueJS 中的 window.onpopstate 中使用变量
- angular - Jasmine 测试:预期未定义等于 Object。(如何测试@input)
- java - 如何正确地使用负数?