关于会话丢失的几个主题,包括Github上的广泛会议,但似乎都没有涉及为什么它们可能在一台计算机上工作而在另一台计算机上工作。
我在一个小型管理系统上拥有200多名用户。登录由通常的用户名和密码控制,在验证时,用户会看到一个欢迎页面,通过常见的php session_start()启动会话。这一直在Edge,IE,Chrome和Firefox上工作,据我所知Safari,因为有些用户在Apple上,但我无法访问Apple设备。我最近更改了主机,新主机使用了LiteSpeed。
我有两个用户可以在IE中登录并获得欢迎页面(此时会话已启动)但是当他们请求下一页时,会要求他们再次登录,这意味着会话已丢失。已经解决了关闭cookie /会话的明显原因。
我可以使用他们的凭据和登录,并在我的计算机上使用IE,Edge,Firefox和Chrome工作。如果使用其他浏览器,则一个用户可以登录并工作。我正在等待第二个用户是否可以使用其他浏览器。我知道有其他用户使用IE没有问题。
在我切换主机并开始使用LiteSpeed之前,我不确定问题是否存在,这可能只是一个巧合,但问题似乎确实在那个时候形成,但我仍然对为什么这些会话感到困惑一些运行IE的计算机,但没有其他计算机。赞赏的想法。
答案 0 :(得分:0)
这似乎是一个愚蠢的问题,但只是为了进行健全性检查......您确实在所有页面上分享session_start();
是否正确?每个页面都需要这个来读取与会话相关的存储变量,例如登录验证或不是。
尝试添加以上来自php论坛的session_start:
if(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {
session_cache_limiter("public");
}