我在使用AJAX請求時出現$_SESSION
超全球問題。
session_start()
函數在任何會話編碼之前被調用。會話ID在調用代碼和AJAX響應代碼中也是相同的(在兩個腳本中通過回顯session_id()
進行測試)。 AJAX PHP文件位於同一個域中。一切都應按照標準定義的方式工作,但是當我在被調用的AJAX腳本文件中執行print_r($_SESSION)
時,我會得到Arrray()
輸出。
我撞到磚牆......我不知道這是爲什麼不工作...
在Chrome和Firefox都選中。
任何想法?
UPDATE:
問題是與$.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));
?>
指數.PHP輸出:
SESSION_ID: xxxxxxxxxxxxxxxxxxxxxxx
SESSION_SIZE: 1
報警輸出:
SESSION_ID: xxxxxxxxxxxxxxxxxxxxxxx (right session id)
SESSION_SIZE: 0
而AJAX調用後$ _SESSION是空的。跨所有其他腳本與同一屆...我很困惑...
在'session_start()'前有沒有任何代碼? –
你的瀏覽器中啓用了cookies嗎? – somnath
用var_dump()檢查它 – sohaan