我有一个如下所示的 php 代码,其中会话超时在没有活动的 60 分钟后发生。以下代码位于文件/mno.php中。我的登录和注销代码也在同一个文件/mno.php中。
/mno.php
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 3600)) {
session_destroy(); // destroy session data in storage
!isset($_SESSION['pageadmin']);
/* Update Table (START) */
$open="false";
$stmt= $connect->prepare("UPDATE trace_users SET open=? WHERE user_name=?");
$stmt->bind_param('ss', $open, $_SESSION['user_name']);
$stmt->execute();
/* Update Table (END) */
header('location: /mmo.php');
exit();
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
代码中的表trace_users跟踪所有登录的用户。在该表中,有两列user_name和open。当任何用户登录/注销时,该值设置为true/false。
我已经包含了 sql 查询,其中我试图在没有活动时更新表,但不幸的是,当 60 分钟没有活动发生时,该特定用户的列值未设置为 false 。
这是我试过的:
在做了一些研究之后,我想我必须运行一个计时器(js/ajax)。在下面显示的 javascript 中,我计算了Last Activity和Current time之间的差异。如果超过 60 分钟,那么它将更新数据库表。这是我尝试过的,但我相信需要做更多的工作才能更新数据库中的表。
<script>
let x = setInterval(function() {
let lastActivity = <?php echo ($_SESSION['LAST_ACTIVITY']); ?>
let now = <?php echo time() ?>;
let difference = now - lastActivity;
if (difference > 3600) {
clearInterval(x);
}
}, 1000
);
</script>
问题陈述:
我想知道我应该在上面的 js(或 php)代码中进行哪些更改,以便在 60 分钟内没有任何活动时,它应该将该特定用户的open列更新为false(在表trace_users中)。

编辑 1:
我的登录代码和会话历史代码在同一个文件/mno.php中。我已将所有内容放在同一个文件/mno.php中。
慕哥9229398
小怪兽爱吃肉
森林海
海绵宝宝撒
慕盖茨4494581
随时随地看视频慕课网APP