PHP会话变量随机取消设置

时间:2013-10-18 20:05:20

标签: php session

我有一个PHP会话,我用它来管理我网站的管理面板。这使用两个变量来监控会话lastActionuser。最近,在我的网站的一个特定页面上,会话变量user将完全随机取消设置并将用户发送回登录页面,但我似乎无法弄清楚原因。

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='';

重新加载页面

关于可能导致此问题的任何想法?

1 个答案:

答案 0 :(得分:3)

这很可能与你的标题有关。会话变量仅在其设置的域内有效。例如,如果您在www.example.com中设置会话变量,但是您的标题重定向到example.com,则您的会话变量不会使用,就像重定向到mobile.example.com一样。更改我在代码中看到的相对路径,看看是否是导致它的原因。