我有一个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");
}
我从未收到超时错误,只有无效用户错误。
有时当我转储会话变量时,我会得到两个值lastAction
和user
的数组,但是,只需几秒钟后重新加载页面,user
未设置,但lastAction
没有。
此外,在这个例子中,我正在通过javascript:parent.location='';
关于可能导致此问题的任何想法?
答案 0 :(得分:3)
这很可能与你的标题有关。会话变量仅在其设置的域内有效。例如,如果您在www.example.com
中设置会话变量,但是您的标题重定向到example.com
,则您的会话变量不会使用,就像重定向到mobile.example.com
一样。更改我在代码中看到的相对路径,看看是否是导致它的原因。