当前位置:首页 > PHP

php实现记住登录

2026-02-16 20:11:06PHP

php实现记住登录

PHP实现记住登录功能

使用Cookie存储登录凭证

在用户登录成功后,生成一个唯一的token,将其存储在数据库中,并设置一个长期有效的cookie。当用户再次访问时,检查cookie中的token是否有效。

php实现记住登录

// 用户登录成功后生成token
$token = bin2hex(random_bytes(32));
$expire = time() + 60 * 60 * 24 * 30; // 30天有效期

// 存储token到数据库
$stmt = $pdo->prepare("INSERT INTO remember_tokens (user_id, token, expires_at) VALUES (?, ?, ?)");
$stmt->execute([$user_id, $token, date('Y-m-d H:i:s', $expire)]);

// 设置cookie
setcookie('remember_token', $token, $expire, '/', '', true, true);

验证记住登录状态

每次页面加载时检查是否存在remember_token cookie,并验证其有效性。

if (isset($_COOKIE['remember_token'])) {
    $token = $_COOKIE['remember_token'];

    $stmt = $pdo->prepare("SELECT user_id FROM remember_tokens WHERE token = ? AND expires_at > NOW()");
    $stmt->execute([$token]);
    $row = $stmt->fetch();

    if ($row) {
        // 登录用户
        $_SESSION['user_id'] = $row['user_id'];
    } else {
        // 无效token,删除cookie
        setcookie('remember_token', '', time() - 3600, '/');
    }
}

安全注意事项

  1. 使用HTTPS确保cookie传输安全
  2. 设置cookie的HttpOnly和Secure标志
  3. 定期清理过期的token
  4. 允许用户主动注销时删除token
// 用户注销时删除token
if (isset($_COOKIE['remember_token'])) {
    $token = $_COOKIE['remember_token'];
    $pdo->prepare("DELETE FROM remember_tokens WHERE token = ?")->execute([$token]);
    setcookie('remember_token', '', time() - 3600, '/');
}

数据库表结构示例

CREATE TABLE remember_tokens (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    token VARCHAR(64) NOT NULL,
    expires_at DATETIME NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

标签: php
分享给朋友:

相关文章

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php记住密码怎么实现

php记住密码怎么实现

使用Cookie实现记住密码功能 在PHP中,可以通过设置Cookie来记住用户的登录状态。以下是一个简单的实现方式: // 用户登录验证成功后 if ($login_success) {…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php搜索功能实现的

php搜索功能实现的

PHP 搜索功能实现方法 数据库搜索实现 使用 SQL 的 LIKE 语句进行模糊匹配,适用于小型网站和简单搜索需求。 $searchTerm = $_GET['search']; $query =…

php mvc 实现

php mvc 实现

PHP MVC 实现方法 MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的逻辑、数据和界面。以下是实现PHP MVC框架的关键步骤。 目录结构 创建以下目录结构…

php实现推送消息推送消息

php实现推送消息推送消息

PHP 实现消息推送的方法 使用 WebSocket 实现实时推送 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,适合实现实时消息推送。 安装 Ratchet 库(WebSo…