我$_SESSION
在 AJAX 请求上遇到了超全局问题。
session_start()
在任何会话编码之前调用函数。会话 ID 在调用代码和 AJAX 响应代码中也相同(通过session_id()
在两个脚本中回显进行测试)。AJAX PHP 文件位于同一个域中。一切都应该按照标准的定义工作,但是当我print_r($_SESSION)
在调用的 AJAX 脚本文件中进行操作时,我会得到Arrray( )
输出。
我撞到了砖墙...我不知道为什么这不起作用...
在 Chrome 和 Firefox 中都检查过。
有任何想法吗?
更新:
问题在于$.ajax(...)
请求!当我执行 AJAX 请求时,它知道正确的会话 ID,并且该session_start()
函数返回TRUE
(成功继续会话)但随后它重置了我的$_SESSSION
超全局!它清空了...我还不知道为什么...
代码:
索引.php:
<?php
session_start();
$_SESSION['Test']='O.K.';
echo("SESSION_ID: " . session_id());
echo("SESSION_SIZE:" . sizeof($_SESSION));
?>
... Standard HTML stuff and jQuery include ...
<script>
$.ajax(
{
type: "POST",
url: "AJAXTest.php",
data: null,
success: function(sData) { alert(sData); }
});
</script>
AJAXTest.php:
<?php
session_start();
echo("SESSION_ID: " . session_id());
echo("SESSION_SIZE:" . sizeof($_SESSION));
?>
index.php 输出:
SESSION_ID: xxxxxxxxxxxxxxxxxxxxxxx
SESSION_SIZE: 1
警报输出:
SESSION_ID: xxxxxxxxxxxxxxxxxxxxxxx (right session id)
SESSION_SIZE: 0
并且在 AJAX 调用之后 $_SESSION 为空。在同一会话的所有其他脚本中......我很困惑......