当前位置:首页 > PHP

记住密码 php实现

2026-01-30 06:14:33PHP

实现记住密码功能的方法

在PHP中实现记住密码功能通常通过Cookie或Session结合数据库验证完成。以下是两种常见实现方式:

基于Cookie的实现

设置长期有效的Cookie存储用户登录凭证:

记住密码 php实现

$username = 'user123';
$token = bin2hex(random_bytes(32)); // 生成唯一令牌
setcookie('remember_user', $username, time() + (86400 * 30), "/"); // 30天有效期
setcookie('remember_token', $token, time() + (86400 * 30), "/");

// 同时将令牌存入数据库
$hashedToken = password_hash($token, PASSWORD_DEFAULT);
$stmt = $pdo->prepare("UPDATE users SET remember_token = ? WHERE username = ?");
$stmt->execute([$hashedToken, $username]);

验证Cookie时的处理:

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

    $stmt = $pdo->prepare("SELECT remember_token FROM users WHERE username = ?");
    $stmt->execute([$username]);
    $user = $stmt->fetch();

    if($user && password_verify($token, $user['remember_token'])){
        $_SESSION['loggedin'] = true;
        $_SESSION['username'] = $username;
    }
}

基于Session的实现

记住密码 php实现

延长Session有效期(需配合服务器配置):

ini_set('session.gc_maxlifetime', 86400 * 30); // 30天
session_set_cookie_params(86400 * 30);
session_start();

// 登录成功后设置Session
$_SESSION['loggedin'] = true;
$_SESSION['username'] = 'user123';
$_SESSION['LAST_ACTIVITY'] = time(); // 更新最后活动时间

安全注意事项

  • 始终使用HTTPS传输Cookie
  • 敏感信息不应直接存储在Cookie中
  • 定期更换令牌(如每次登录生成新令牌)
  • 提供注销功能清除Cookie和Session
  • 实现CSRF保护机制

数据库设计建议

用户表应包含以下字段:

ALTER TABLE users ADD COLUMN remember_token VARCHAR(255);
ALTER TABLE users ADD COLUMN token_expiry DATETIME;

令牌验证逻辑应同时检查过期时间:

$stmt = $pdo->prepare("SELECT remember_token, token_expiry FROM users WHERE username = ?");
$stmt->execute([$username]);
$user = $stmt->fetch();

if($user && password_verify($token, $user['remember_token']) && strtotime($user['token_expiry']) > time()){
    // 验证通过
}

标签: 密码php
分享给朋友:

相关文章

vue实现密码

vue实现密码

Vue 实现密码功能 在 Vue 中实现密码功能通常涉及密码输入框、显示/隐藏切换以及基本的验证逻辑。以下是具体实现方法: 密码输入框与显示切换 使用 v-model 绑定密码数据,结合 type…

vue实现密码框的包

vue实现密码框的包

Vue 密码框实现方案 使用原生 HTML 和 Vue 双向绑定 通过 v-model 绑定输入值,结合 type="password" 实现基础密码框功能: <template>…

php实现搜索功能

php实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('lo…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现websocket

php实现websocket

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

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HT…