纯服务器端 PHP。每次用户提交表单时,我都会更新数据库中的“上次事件”时间。
我想定期检查并强制注销非事件用户以释放许可证。
我该怎么做?我是否还应该将 session ID 存储在数据库中,然后销毁 session ?这将为另一个用户释放许可证,当第一个最终提交另一个表单时,我可以在每个表单操作文件的顶部检查 session 是否仍然存在,并在必要时将用户重定向到登录页面。
那行得通吗?这是“最好”的方式吗?有示例代码吗?
更新:我正在轮询,因为我需要知道用户何时超时才能更新数据库。
最佳答案
每次登录时,您都需要跟踪 session 开始时间,可以这样做:
$_SESSION['SessionStartTime'] = time();
对于每个用户请求执行任何操作,您需要运行此脚本来监控不活动。
<?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();
?>
关于php - 如何因不活动而注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5839102/