Maw*_*awg 4 php session session-timeout
纯服务器端PHP。每次用户提交表单时,我都会更新数据库中的“上次活动”时间。
我想进行定期检查,并强制注销不活动的用户释放许可证。
我该怎么做?我是否还应该将会话ID存储在数据库中,然后销毁该会话?这样可以为另一个用户释放许可证,并且当第一个最终提交另一个表单时,我可以在每个表单操作文件的顶部检查会话是否仍然存在,并在必要时将用户重定向到登录页面。
那行得通吗?这是“最佳”方式吗?任何示例代码?
更新:我正在轮询,因为我需要知道用户何时超时才能更新数据库。
每次登录时,您都需要跟踪会话开始时间,可以这样进行:
$_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)