当前位置:首页 > PHP

php实现登录超时

2026-02-16 15:32:59PHP

PHP实现登录超时的方案

使用Session过期时间控制

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

php实现登录超时

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

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

检查最后活动时间

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

php实现登录超时

$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定时检测并提醒用户

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
分享给朋友:

相关文章

php实现搜索功能

php实现搜索功能

实现基础搜索功能 使用PHP和MySQL实现基础的搜索功能需要结合表单提交与数据库查询。创建一个HTML表单用于接收用户输入的搜索关键词,通过PHP处理表单数据并查询数据库。 // 搜索表单 (HT…

git php实现

git php实现

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

php实现websocket

php实现websocket

PHP 实现 WebSocket WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。PHP 可以通过多种方式实现 WebSocket 功能,以下是几种常见的方法: 使用 Ratc…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

基于php的设计与实现

基于php的设计与实现

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

php 函数实现

php 函数实现

PHP 函数实现基础 PHP 函数的定义使用 function 关键字,后跟函数名和参数列表。函数名不区分大小写,但建议保持一致。 function functionName($param1, $p…