我有一個PHP會話,我用來管理我的網站管理面板。這使用兩個變量來監視會話,lastAction
和user
。最近,在我的網站的一個特定頁面上,會話變量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");
}
我從來沒有得到超時錯誤,只有無效的用戶錯誤。
有時,當我轉儲會話變量,我得到兩個值,lastAction
和user
的陣列,但是呢,簡單地僅幾秒鐘後重新加載頁面,user
得到取消設置,但lastAction
沒有。
而且,在這種情況下,我通過JavaScript重新加載頁面:parent.location='';
上什麼可能導致此任何想法?
是否有可能sesssion已超過php會話超時設置? –
我不這麼認爲;這是隨機發生的,如果我在登錄後直接進入此頁面(可能僅在一分鐘後),則1/5刷新將會取消設置該變量。 – David