在php中创建一个自动注销页面

时间:2013-05-03 06:43:23

标签: php session timeout

我正在尝试编写一个自动logout脚本,这似乎有效但不符合我的期望,我不知道我到底做错了什么,我想把timeout.php放在每一页上当用户空闲时,它会自动注销并将其重定向到login页面,但当我为管理员添加用户的添加用户页面放置timeout.php时,它会覆盖添加用户页面的链接并且放置一个login页面,该页面也不能很好地出现(即表单已经脱离其位置)it looks like this

这是timeout.php代码

   <?php 
$_SESSION = 0;
if($_SESSION['session_count'] == 0) { 
$_SESSION['session_count'] = 1;
$_SESSION['session_start_time']=time();
} else {
$_SESSION['session_count'] = $_SESSION['session_count'] + 1;
}

$session_timeout = 10; //  (in sec)

$session_duration = time() - $_SESSION['session_start_time'];
if ($session_duration > $session_timeout) { 
session_unset();
session_destroy();
session_start();
session_regenerate_id(true);
$_SESSION["expired"] = "yes";
header("Location: login.php"); // Redirect to Login Page
} else {
$_SESSION['session_start_time']=time();
}
?>

我想让它自动注销并将自己重定向到登录页面,并显示一条消息,因为会话已经过期,我希望它将它放在每个页面上,而不会打扰表格或重叠页面

1 个答案:

答案 0 :(得分:0)

这可能与问题无关:为什么在if-tag中使用$_SESSION["expired"] = "yes";?如果你没有使用它,我没有看到设置该会话变量的意义。 (也许你在其他地方使用它,我不知道)。

另外,你确定你的重定向是正确的吗? 试试echo header("Location: login.php"); 这应该可以帮助您检查重定向是否至少是正确的。

如果不是这样:检查您是否已在添加用户页面上正确定位了timeout.php链接。 (例如:假设您在添加用户页面上使用了if-else,它应该在您的if-tag中,但是您在else-tag中使用了它)