当创建会话并将数据存储到其中时,如果会话ID尚未返回到客户端,则从客户端到服务器的多次调用将导致$_SESSION
对象中显示不同的数据。
例如:
$_SESSION[ "status" ] = "started"
$_SESSION[ "status" ]
如果步骤#2必须创建会话(session_start();
)但尚未返回到客户端,则步骤#4将不会在$_SESSION[ "status" ]
中看到新值。
所以我需要能够检查客户端是否还有会话ID。我该怎么做?
检查session_id()
不起作用,因为如果任何代码调用session_start()
,那么即使客户端尚未在响应中收到它,我也会返回一个值。
答案 0 :(得分:2)
在客户端使用ajax请求页面之前:" /very_slow.php" 客户端可能打开了一个带有一些HTML和Javascript的页面,这会产生ajax请求。在那里开始会议。会话ID将作为HTTP标头发送到客户端,并将在步骤1中由xhr使用。它将保证步骤1..4的会话cookie。