2013-10-18 84 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