2013-07-15 76 views
2

我有一些$_SESSION變量是在我的整個網站的正常工作:PHP會話變量不工作的index.php

print_r($_SESSION)打印

Array ([first_name] => Daniel [last_name] => Jameson [email] => [email protected] [logged_in] => 1)

但是,對於index.php的某些原因所有的變量取消設置:

print_r($_SESSION)打印

Array ()

如果我重新命名index.php來index2.php他們所有的工作!這意味着,代碼本身就很好,但由於某些原因的index.php文件名/路徑的問題。

我最近被列入白名單的mod_security的塊,可能是這個問題的原因是什麼?可能與文件權限有關?這超出了我的專長......

編輯

如果我嘗試像.../index.php?blah它按預期工作的URL。認爲這是一個緩存的問題我補充說:

header('Cache-Control: no-store, private, no-cache, must-revalidate');  // HTTP/1.1 
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false); // HTTP/1.1 
header('Pragma: public'); 
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');     // Date in the past 
header('Expires: 0', false); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT'); 
header ('Pragma: no-cache'); 

但仍的index.php會取消$_SESSION變量。儘管我也清除了緩存。

+0

ok,再次測試,但在index.php後添加如下所示的隨機關鍵字:index.php?anytext來檢查index.php是否緩存 – 2013-07-15 01:05:52

+0

是的,它被緩存!我將如何防止這種情況發生?爲什麼它只發生在index.php而不是其他頁面? –

+0

請用你提出的重複問題中的新信息[編輯]這個問題。重複將很快被移除。 –

回答

0

首先確定你的函數session_start()是在代碼中的所有內容之前設置的。 其理由$ _SESSION不能設置: 當你只是一個頭前設置$ _SESSION。所以,你應該把功能session_write_close()就在頭前。 或與您的緩存問題。