php记住密码怎么实现
使用 Cookie 存储登录信息
在用户登录成功后,将用户名和加密后的密码存储在 Cookie 中。加密可以使用 password_hash 函数或对称加密算法如 AES。
$username = 'user123';
$password = 'securepass';
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
setcookie('remember_username', $username, time() + 86400 * 30, '/');
setcookie('remember_password', $hashedPassword, time() + 86400 * 30, '/');
使用 Session 和 Token 机制
生成一个随机 token 存储在数据库和用户 Cookie 中,用于验证用户身份。这种方法比直接存储密码更安全。

$token = bin2hex(random_bytes(32));
setcookie('remember_token', $token, time() + 86400 * 30, '/');
// 将 token 和用户ID存入数据库
$stmt = $pdo->prepare("UPDATE users SET remember_token = ? WHERE id = ?");
$stmt->execute([$token, $userId]);
自动登录验证流程
在页面加载时检查 Cookie 中的 token 或凭证,与数据库记录比对实现自动登录。

if (isset($_COOKIE['remember_token'])) {
$token = $_COOKIE['remember_token'];
$stmt = $pdo->prepare("SELECT * FROM users WHERE remember_token = ?");
$stmt->execute([$token]);
$user = $stmt->fetch();
if ($user) {
$_SESSION['user_id'] = $user['id'];
}
}
安全注意事项
敏感信息如密码必须加密存储,推荐使用 password_hash 和 password_verify 函数处理密码。设置合理的 Cookie 过期时间,建议不超过 30 天。
if (isset($_COOKIE['remember_password'])) {
$inputPassword = 'user_input_password';
if (password_verify($inputPassword, $_COOKIE['remember_password'])) {
// 验证通过
}
}
提供用户控制选项
在登录表单添加"记住我"复选框,让用户自主选择是否启用该功能。
<input type="checkbox" name="remember_me" id="remember_me">
<label for="remember_me">记住密码</label>
if (isset($_POST['remember_me'])) {
// 执行记住密码逻辑
}






