我一直無法找出這個問題 - 它只是沒有任何意義。PHP會話變量不保存(雖然有些是)
服務器是PHP 5.2.6在Windows NT PDP-IIS 5.2構建運行3790
首先我已確認的會議都可以通過這個測試腳本的工作:
<?php
session_start();
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Counter ".$_SESSION['counter']++.".<br><a href=".$_SERVER['PHP_SELF'].">reload</a>";
?>
,計數器增加 - 這作品。
我的網站是使用一個定製的MVC框架(我寫的),我把應用功能的最後一個代碼,以此爲測試目的:
echo session_id(); echo '<pre>'; var_dump($_SESSION); echo '</pre>';
session_write_close(); exit();
第一本文件的幾行:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
session_start();
會話轉儲並看起來像預期的那樣。現在我去服務器並打開會話文件 - 結果似乎取決於我使用的瀏覽器。對於Chrome和Safari,會話文件是空的。對於Opera和IE8,會話文件看起來很好。我會在一分鐘內到達FireFox - 但此時FireFox顯得很好。
所以出於測試目的,立即在session_start下列()我加了以下幾行:
$_SESSION['bogus'] = -5;
$_SESSION['test'] = 'other';
我閉上我的瀏覽器,並再次嘗試該網站,所以我可以肯定我有一個新的會話。 Opera和IE8會話文件再次顯示正常。 Chrome和Safari都具有'假'和'測試'的價值,但是我的其他SESSION值缺失。在這一點上,FireFox起初與Chrome和Safari存在相同的問題 - 但在刷新頁面後,其餘部分出現。刷新沒有幫助Chrome或Safari。
這裏是的var_dump看起來像在這一點上有什麼:
array(3) {
["bogus"]=>
int(-5)
["test"]=>
string(5) "other"
["saved_form"]=>
array(1) {
["dgvSJM"]=>
array(4) {
["method"]=>
string(4) "post"
["processor"]=>
string(0) ""
["formid"]=>
string(10) "searchForm"
["fields"]=>
array(2) {
["searchTerm"]=>
array(5) {
["label"]=>
string(10) "SearchTerm"
["type"]=>
string(6) "search"
["required"]=>
bool(false)
["multiple"]=>
bool(false)
["selectempty"]=>
string(6) "B5BMXw"
}
["formInput_0"]=>
array(5) {
["label"]=>
string(0) ""
["type"]=>
string(6) "submit"
["required"]=>
bool(false)
["multiple"]=>
bool(false)
["selectempty"]=>
string(6) "TkZUfo"
}
}
}
}
}
我創建了一個不同的網站有不同的子域,並複製我的代碼完全結束了 - 它工作得很好「saved_form」中完美展現了會話文件。所以我嘗試刪除原始網站並重新創建它 - 沒有幫助解決問題。
任何人都知道發生了什麼和/或我該如何修復它?
謝謝。
您是否嘗試清除問題瀏覽器上的緩存/ Cookie? –
是的,雖然它沒有幫助。雖然我不確定緩存/ cookie如何影響服務器上的會話文件。會話cookie正在傳遞 - 會話只是沒有正確保存。 – Chris