php - 如何因不活动而注销用户

标签 php session session-timeout

纯服务器端 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/

相关文章:

c# - 为什么session对象会抛出空引用异常?

php - 如何让 PHP session 在浏览器关闭或延长一段时间后过期

php - 使用 PDO 检查表是否存在

php - 将文本和所见即所得表单提交到数据库和平面文件

php - 如果不存在 PHP session ,则禁用页面上的所有输入按钮

ruby-on-rails - rails : get session timeout

javascript - 在php中更新 session 超时的数据库表

php - Mysqli 在多个字段中搜索值

php - Symfony 3.3 内置服务器错误

asp.net - ASP.NET 中的默认 session 超时是多少?