我一直在尋找在PHP 4服務器上運行的腳本中的問題(我知道......他們正在升級,但他們需要修復仍在PHP 4上的服務器)PHP會話變量正在重置
我在將會話變量重置爲下一頁開頭的其他值時遇到問題。這是我跑到這一點的測試,現在我不知道發生了什麼。
頁面結構: main.php - >首先調用start_page.inc。 main.php - >調用footer.inc最後。
下面是步驟正在發生什麼,我想不通:
start_page.inc: echos 'test2'
(開始頁打印的$_SESSION['test']
值)
default.php: echos 'test2'
(如default.php打印出的$_SESSION['test']
值)
default.php: SET 'test2'
(如default.php設置的$_SESSION['test']
到test2
的值)
footer.inc: SET 'test'
(footer.inc套$_SESSION['test']
到test
值)
footer.inc: echos 'test'
(footer.inc打印出的$_SESSION['test']
值)
不管多少次,我刷新頁面,它永遠是這樣只有一個例外。第一次設置會話變量時,它會在下次刷新時回顯test
。
任何人都明白爲什麼/如何發生這種情況以及我如何解決這個問題?我在PHP 5服務器上測試了這些文件,結果實際上相同。
前兩個回聲應該始終是test
,除非我遺漏了一些東西。
我試過剝離下來到一個測試頁面沒有附加值,似乎無法重現它...測試變量不被覆蓋。我爲此測試專門創建了它。
是否在每個頁面中使用footer.inc?無論哪一行代碼將會話值設置爲最後一行,都將轉到下一頁加載。 –
我想你錯過了一些東西,對我來說至少是不可能發現那裏正在發生的事情,而沒有至少看到原始代碼的一部分......嘗試評論所有會話分配,並從非常第一個查看會話值何時以及實際在哪裏更改錯誤... – Mahdi
掃描頁腳顯示一行「session_write_close()」。這似乎是導致此問題的問題。 – teynon