首先,我试图找到一个关于SO的答案,但找不到任何特定于我所遇到的问题的答案。
现在,问题如下:
- 我发送一个JSON字符串与AJAX到服务器,一切都在同一域,同一服务器
- 我解码JSON字符串,内爆破它使用逗号作为分隔符,得到一个字符串作为返回并将该字符串保存到$_SESSION变量
- 为了测试的目的,我甚至在$_SESSION变量设置后立即执行
print_r
,我可以看到它正在被设置 - 当我尝试在不同的页面上使用$_SESSION变量时,它不再存在了。$_SESSION可以被访问,但它只是那个不存在的变量。
这里是最好的部分:
如果我在设置$_SESSION变量之前放置sleep(1)
或执行任何需要很长时间的操作
看起来好像你的问题是在你的会话写处理程序的写函数。这个SQL语句看起来有点奇怪:
试题:
Core::Database()->query_execute("REPLACE INTO sessions VALUES (" .
Core::Database()->query_escape($id) . "'," .
time() . ",'" .
data = '" . Core::Database()->query_escape($data) . "')");
代替:
Core::Database()->query_execute("REPLACE INTO sessions SET
id = '" . Core::Database()->query_escape($id) . "',
lastaccess = '" . time() . "',
data = '" . Core::Database()->query_escape($data) . "'");
基本上使用VALUES和REPLACE代替SET。