如何在不先单击的情况下自动记录用户会话

时间:2018-05-23 19:34:43

标签: javascript php timeout

我创建了一个基于用户的网站,到目前为止,我已经能够轻松处理会话。说到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”与我上面粘贴的第一段代码非常相似,不过我已经拿出了它检查超时的部分。但是,现在我遇到了退出选项卡并且没有退出登录的问题,但这是另一个问题。

0 个答案:

没有答案