当前位置:首页 > PHP

记住密码 php实现

2026-01-30 06:14:33PHP

实现记住密码功能的方法

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

基于Cookie的实现

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

$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的实现

延长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;

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

记住密码 php实现

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

相关文章

php实现搜索功能

php实现搜索功能

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

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

基于php的设计与实现

基于php的设计与实现

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

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…