我有问题$_SESSION
在AJAX请求超全局。
session_start()
函数的任何会话编码之前调用。 会话ID是也调用代码和AJAX响应代码(通过回测试的相同session_id()
在这两个脚本)。 AJAX PHP文件是在同一个域。 一切都应该工作由标准定义的,但是当我做print_r($_SESSION)
在被称为AJAX脚本文件,我得到Arrray( )
输出。
我已经打了砖墙......我不知道这是为什么不工作...
无论是在Chrome和Firefox检查。
有任何想法吗?
更新:
问题是与$.ajax(...)
的要求! 当我做AJAX请求它知道正确的会话ID,并session_start()
函数返回TRUE
(成功续会),但是它重置我的$_SESSSION
超全局! 它会清空出来...我不知道为什么还...
码:
index.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后是空的。 跨越与同一会话中所有其他的脚本...我感到困惑...