php实现记住密码
PHP实现记住密码功能
实现记住密码功能通常需要使用Cookie或Session来存储用户登录信息。以下是几种常见的方法:
使用Cookie存储登录信息
设置Cookie来存储用户登录凭证,有效期可以设置为较长时间:

// 用户登录成功后设置Cookie
$username = 'user123';
$token = md5(uniqid(rand(), true)); // 生成唯一token
// 设置Cookie,有效期30天
setcookie('remember_username', $username, time() + 60 * 60 * 24 * 30, '/');
setcookie('remember_token', $token, time() + 60 * 60 * 24 * 30, '/');
// 同时应将token存入数据库
$sql = "UPDATE users SET remember_token = '$token' WHERE username = '$username'";
验证记住的登录信息
当用户再次访问网站时,检查Cookie并自动登录:
if (!isset($_SESSION['user']) && isset($_COOKIE['remember_username']) && isset($_COOKIE['remember_token'])) {
$username = $_COOKIE['remember_username'];
$token = $_COOKIE['remember_token'];
// 查询数据库验证token
$sql = "SELECT * FROM users WHERE username = '$username' AND remember_token = '$token'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) == 1) {
$_SESSION['user'] = $username;
// 用户自动登录成功
}
}
安全注意事项
- 不要直接存储用户密码在Cookie中
- 使用HTTPS协议传输敏感数据
- 定期更换token
- 提供注销功能清除Cookie
// 注销时清除Cookie
setcookie('remember_username', '', time() - 3600, '/');
setcookie('remember_token', '', time() - 3600, '/');
使用更安全的加密方式
考虑使用更安全的加密方式生成token:

$token = bin2hex(random_bytes(32)); // 生成32字节的随机token
数据库存储方案
在用户表中添加字段存储token和过期时间:
ALTER TABLE users ADD COLUMN remember_token VARCHAR(255);
ALTER TABLE users ADD COLUMN token_expires DATETIME;
更新token时同时设置过期时间:
$expires = date('Y-m-d H:i:s', time() + 60 * 60 * 24 * 30);
$sql = "UPDATE users SET remember_token = '$token', token_expires = '$expires' WHERE username = '$username'";
这种实现方式既方便用户,又能保证一定的安全性。






