我有一个非常奇怪的问题。我正在使用这个简单的代码:
<?php
session_start();
if(isset($_SESSION['test'])) {
echo $_SESSION['test']."<br>session:".session_id();
}
else {
echo "<h1>Session inexistante. Crée</h1>";
$_SESSION['test']=2;
}
?>
1-我删除所有cookie,会话,缓存......
2 - 我转到我的页面并收到消息“Sessioninexistante.Crée”(意思是“会话不存在。创建”)。这个是正常的
3 - 我更新了这个页面,我仍然收到消息“Sessioninexistante.Crée”。 这不正常!
4 - 我再次更新,会话正常工作
Here are screenshots with the detail of HTTP requests
- 我们发现在第一次加载时会话不存在并且是Chrome要求的
- 在第二次加载时Chrome会提供正确的请求,提供PHPSESSID,响应是正确的,因为它不包含其他PHPSESSID,所以看起来PHP对此PHPSESSID感到满意。但显示的信息仍然是“Sessioninexistante.Crée”!
- 我们在第三次加载时看到PHP在第一次加载页面时给出的会话ID是正确的。那么为什么它在第二次加载时没有得到认可呢?
我在共享服务器上使用Php5.6。
这个问题相当随机。即使某些事情一切正常,我也没有困难重现它。有时问题是第三次加载。
这个问题在我的网站上更为通用。许多浏览器的用户都有类似的问题。
有一个类似的问题here:但是你看到我没有404错误或302重定向。
谢谢你的帮助!