我们的一位客户目前遇到了麻烦。我们的系统在登录后使用 AJAX 请求与服务器进行所有通信。无论在哪里使用 $_SESSION,session_start(); 位于脚本之上 - 包含在 try...catch 中,因为自定义错误处理程序会在错误时引发异常。因此,伪代码如下所示:
//set_error_handler_here
try{
session_start();
//do_something_with $_SESSION
(...)
} catch($e){
//handle error
}
现在,问题是:我们的客户似乎随机丢失了会话,我的意思是 fe $_SESSION['id'] 将抛出“未知索引”错误。Internet Explorer 和 Chrome 都是这种情况。我们已经在各种系统中测试了这个系统几个月,可以确认我们以前没有出现过这个错误。
我们不使用 suhosin。会话到期前的时间内也有活动。有没有人对解决方案有任何想法?
编辑:我最终进行了测试,看看是否设置了 $_COOKIE['PHPSESSID']。isset($_COOKIE['PHPSESSID']) 返回错误。这意味着客户端可能受到某种形式的恶意软件的困扰,考虑到它发生在两个浏览器上。我要感谢所有尝试提供帮助的人,某些选项是我们没有想到的。