2013-10-18 103 views
0

我有一個PHP會話,我用來管理我的網站管理面板。這使用兩個變量來監視會話,lastActionuser。最近,在我的網站的一個特定頁面上,會話變量user將完全隨機地取消設置,並將用戶發送回登錄頁面,但我似乎無法弄清楚原因。PHP會話變量隨機清除

session_start(); 

$fn = "timeout.txt"; 
$fh = fopen($fn,'r'); 
$to = fread($fh,filesize($fn)); 

if(abs(time()-$_SESSION["lastAction"]) > $to) 
{ 
    session_unset(); 
    die("Timeout"); 
} 

var_dump($_SESSION); 

//Set timeout back to 0 
$_SESSION["lastAction"] = time(); 

if($_SESSION["user"] != "...") 
{ 
    die("Invalid User"); 
    header("Location:/login"); 
} 

我從來沒有得到超時錯誤,只有無效的用戶錯誤。

有時,當我轉儲會話變量,我得到兩個值,lastActionuser的陣列,但是呢,簡單地僅幾秒鐘後重新加載頁面,user得到取消設置,但lastAction沒有。

而且,在這種情況下,我通過JavaScript重新加載頁面:parent.location='';

上什麼可能導致此任何想法?

+0

是否有可能sesssion已超過php會話超時設置? –

+0

我不這麼認爲;這是隨機發生的,如果我在登錄後直接進入此頁面(可能僅在一分鐘後),則1/5刷新將會取消設置該變量。 – David

回答

3

這很可能與您的標題有關。會話變量只在它們設置的域內有效。例如,如果將會話變量設置爲www.example.com,但您的標題重定向到example.com,則不會使用會話變量,與重定向到mobile.example.com。改變我在你的代碼中看到的相對路徑,看看它是什麼造成的。

+0

你的意思是什麼相對的路徑,特別是,因爲我有時仍然退出登錄。 – David

+0

我不知道,我看不到所有可能導致它的頁面或所有代碼。這是讓你看透。它也可能是JavaScript重定向,而不僅僅是頭重定向。主要的是要與你的域名保持一致。 –

+0

圖像上的404錯誤是否有可能導致此錯誤? – David