我在会话中使用我的网站登录用户。
问题是,我想允许用户使用remember
密码,因此在关闭/打开浏览器后,他们不需要再次登录。
我是否需要在会话中使用Cookie来制作?
我的代码:
$user = $_POST['user'];
$pass = $_POST['pass'];
$stmt = $mysqli->prepare("SELECT id, user, pass FROM users WHERE user = ?");
$stmt->bind_param('s', $user);
$stmt->execute();
$stmt->bind_result($id, $user, $pass2);
$stmt->fetch();
$stmt->close();
if (password_verify($pass, $pass2)) {
session_start();
$_SESSION["user"] = $user;
setcookie("user", $user, time()+3600000); // set the cookie and next?
}
所以我设置了cookie然后呢?下次如何登录用户?我应该检查会话['用户']是否为空且他们是session = cookie value
?
答案 0 :(得分:3)
默认情况下,当我们设置会话数据时,会话cookie将保存在客户端的浏览器中。因此,如果您希望在用户关闭浏览器后让用户保持登录状态,也许您可以考虑使用php.ini session.cookie_lifetime
指令以秒为单位指定会话cookie的生命周期。
或者您也可以使用session_set_cookie_params
功能。它提供$lifetime
参数来设置cookie的生命周期。
例如,要永久保留会话cookie:
<?php
session_set_cookie_params(0);
session_start();
答案 1 :(得分:1)
在这种情况下,基本的想法是在用户登录期间生成一些随机哈希并将其保存在用户表中以供登录用户使用,同时创建名为login_hash
的cookie作为生成的值集has
和下次当用户登录时检查login_hash
是否存在且与db中的某个用户匹配,然后使用该用户登录。