0

我有一个 PHP 会话,我用它来管理我的网站的管理面板。这使用两个变量来监视会话,lastAction并且user. 最近,在我网站的一个特定页面上,会话变量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='';

关于可能导致这种情况的任何想法?

4

1 回答 1

3

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

于 2013-10-18T20:14:57.447 回答