要实现PHP自动登录,可以遵循以下步骤:
-
生成cookies:在用户登录后,生成一个cookies,并通过setcookie()函数将其保存在客户端浏览器中。
-
持久化session:将用户登录信息存储在session中,并将其持久化到数据库中,保证用户在关闭浏览器后,下次再次打开可以保持登录状态。
-
判断cookies:在用户访问需要登录的页面时,判断其是否存在登录的cookies。如果存在cookies,则从数据库中获取与cookies对应的session信息,以此判断用户是否已经登录。
-
更新cookies:在用户每次访问需要登录的页面时,更新其保存在浏览器中的cookies,保证用户可以长时间保持登录状态。
代码示例:
// 生成cookies
setcookie("user_id", $user_id, time()+3600*24*30, "/");
// 持久化session
$_SESSION["user_id"] = $user_id;
$db->query("INSERT INTO sessions (user_id, session_id) VALUES ($user_id, "".$_SESSION["session_id"]."")");
// 判断cookies
if(isset($_COOKIE["user_id"]) && !empty($_COOKIE["user_id"])) {
$user_id = $db->query("SELECT user_id FROM sessions WHERE session_id="".$_COOKIE["user_id"].""")->fetch()["user_id"];
if($user_id) {
// 用户已登录
}
}
// 更新cookies
setcookie("user_id", $user_id, time()+3600*24*30, "/");
$db->query("UPDATE sessions SET session_id="".$_COOKIE["user_id"]."" WHERE user_id=$user_id");