我创建了一个基于用户的网站,到目前为止,我已经能够轻松处理会话。说到php,我不是一个菜鸟,但我没有良好的javascript工作知识。我为用户设置了超时,以便在不活动 20分钟后自动超时。除了需要单击链接或刷新以使会话实际超时之外,它工作得很好。这是我目前的php超时。
<?php
//TIMEOUT AFTER 20 MINUTES
if(isset($_SESSION['signed_in'])) {
$inactive = 1200;
if(isset($_SESSION['timeout']) ) {
$session_life = time() - $_SESSION['timeout'];
if($session_life > $inactive) {
$id = $_SESSION['user_id'];
//this db row is solely to display # of users logged in
mysqli_query($connect, "UPDATE users SET user_signedin='0' WHERE user_id = '$id'");
session_destroy();
$_SESSION = array();
header("Location: timedout.php");
}
}
$_SESSION['timeout'] = time();
}
?>
但我也试过javascript(将计时器设置为5分钟),如下所示:
<script>
var wintimeout;
function SetWinTimeout() {
wintimeout = window.setTimeout("window.location.href='timedout.php';",300000);
}
$('body').click(function() {
window.clearTimeout(wintimeout); //when user clicks remove timeout and reset it
SetWinTimeout();
});
SetWinTimeout();
</script>
我搜索了很多不同的地方,以了解如何实现自动重定向而无需点击或刷新,但到目前为止还没有运气。人们如何在超时后自动重定向(不点击或刷新)?
编辑:对于正在寻找相同答案的人:好的,我可以通过将此添加到我的页面标题来获得所需的效果
<?php if(isset($_SESSION['signed_in'])) { ?>
<meta http-equiv="refresh" content="1800;url=internal.php" />
?>
“internal.php”与我上面粘贴的第一段代码非常相似,不过我已经拿出了它检查超时的部分。但是,现在我遇到了退出选项卡并且没有退出登录的问题,但这是另一个问题。