当前位置:首页 > PHP

php实现登录超时

2026-02-16 15:32:59PHP

PHP实现登录超时的方案

使用Session过期时间控制

通过设置session.gc_maxlifetimesession.cookie_lifetime来控制会话过期时间

// 设置session存活时间(秒)
ini_set('session.gc_maxlifetime', 1800); // 30分钟
session_set_cookie_params(1800);
session_start();

// 每次操作时更新最后活动时间
$_SESSION['LAST_ACTIVITY'] = time();

检查最后活动时间

在每次请求时验证用户最后活动时间是否超过限制

$timeout_duration = 1800; // 30分钟超时
if (isset($_SESSION['LAST_ACTIVITY']) && 
    (time() - $_SESSION['LAST_ACTIVITY'] > $timeout_duration)) {
    session_unset();
    session_destroy();
    header("Location: login.php?timeout=1");
    exit;
}

结合数据库记录

对于需要更精确控制的情况,可以在数据库中存储登录状态

// 用户登录时记录时间戳
$login_time = time();
$sql = "UPDATE users SET last_activity = $login_time WHERE user_id = $user_id";

// 检查时查询数据库
$sql = "SELECT last_activity FROM users WHERE user_id = $user_id";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
if (time() - $row['last_activity'] > 1800) {
    // 执行登出操作
}

前端配合实现

通过JavaScript定时检测并提醒用户

php实现登录超时

let timeoutTimer = setTimeout(logout, 30 * 60 * 1000);

function resetTimeout() {
    clearTimeout(timeoutTimer);
    timeoutTimer = setTimeout(logout, 30 * 60 * 1000);
}

// 监听用户活动
document.addEventListener('mousemove', resetTimeout);
document.addEventListener('keypress', resetTimeout);

function logout() {
    window.location.href = 'logout.php?reason=timeout';
}

完整实现示例

// 登录处理
session_start();
$_SESSION['user_id'] = $user_id;
$_SESSION['LAST_ACTIVITY'] = time();

// 中间件检查
function checkSessionTimeout() {
    $timeout = 1800;
    if (isset($_SESSION['LAST_ACTIVITY']) && 
        (time() - $_SESSION['LAST_ACTIVITY'] > $timeout)) {
        session_unset();
        session_destroy();
        return false;
    }
    $_SESSION['LAST_ACTIVITY'] = time();
    return true;
}

// 使用中间件
if (!checkSessionTimeout()) {
    header("Location: login.php?session_expired=1");
    exit;
}

标签: php
分享给朋友:

相关文章

git php实现

git php实现

Git 与 PHP 的集成实现 使用 PHP 执行 Git 命令 通过 PHP 的 exec()、shell_exec() 或 passthru() 函数可以直接调用 Git 命令,适用于服务器端操作…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php实现上传图片

php实现上传图片

上传图片的基本流程 PHP 实现图片上传功能需要处理文件接收、验证、保存等步骤。以下是具体实现方法。 创建 HTML 表单 在 HTML 中创建一个表单,设置 enctype="multipart/…