我正在尝试编写一个自动logout
脚本,这似乎有效但不符合我的期望,我不知道我到底做错了什么,我想把timeout.php
放在每一页上当用户空闲时,它会自动注销并将其重定向到login
页面,但当我为管理员添加用户的添加用户页面放置timeout.php
时,它会覆盖添加用户页面的链接并且放置一个login
页面,该页面也不能很好地出现(即表单已经脱离其位置)
这是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();
}
?>
我想让它自动注销并将自己重定向到登录页面,并显示一条消息,因为会话已经过期,我希望它将它放在每个页面上,而不会打扰表格或重叠页面
答案 0 :(得分:0)
这可能与问题无关:为什么在if-tag中使用$_SESSION["expired"] = "yes";
?如果你没有使用它,我没有看到设置该会话变量的意义。 (也许你在其他地方使用它,我不知道)。
另外,你确定你的重定向是正确的吗?
试试echo header("Location: login.php");
这应该可以帮助您检查重定向是否至少是正确的。
如果不是这样:检查您是否已在添加用户页面上正确定位了timeout.php链接。 (例如:假设您在添加用户页面上使用了if-else,它应该在您的if-tag中,但是您在else-tag中使用了它)