由于不活动而如何注销用户

Maw*_*awg 4 php session session-timeout

纯服务器端PHP。每次用户提交表单时,我都会更新数据库中的“上次活动”时间。

我想进行定期检查,并强制注销不活动的用户释放许可证。

我该怎么做?我是否还应该将会话ID存储在数据库中,然后销毁该会话?这样可以为另一个用户释放许可证,并且当第一个最终提交另一个表单时,我可以在每个表单操作文件的顶部检查会话是否仍然存在,并在必要时将用户重定向到登录页面。

那行得通吗?这是“最佳”方式吗?任何示例代码?


更新:我正在轮询,因为我需要知道用户何时超时才能更新数据库。

RKh*_*RKh 5

每次登录时,您都需要跟踪会话开始时间,可以这样进行:

$_SESSION['SessionStartTime'] = time();
Run Code Online (Sandbox Code Playgroud)

对于每个用户执行任何操作的请求,您都需要运行此脚本来监视不活动状态。

<?php
session_start();
$TimeOutMinutes = 15; // This is your TimeOut period in minutes
$LogOff_URL = "login.php"; // If timed out, it will be redirected to this page

$TimeOutSeconds = $TimeOutMinutes * 60; // TimeOut in Seconds
if (isset($_SESSION['SessionStartTime'])) {
    $InActiveTime = time() - $_SESSION['SessionStartTime'];
    if ($InActiveTime >= $TimeOutSeconds) {
        session_destroy();
        header("Location: $LogOff_URL");
    }
}
$_SESSION['SessionStartTime'] = time();
?> 
Run Code Online (Sandbox Code Playgroud)