Rumah > Artikel > pembangunan bahagian belakang > php同时使用session和cookie来保存用户登录信息的实现代码,sessioncookie_PHP教程
1、用户登录状态操作类UserLogin
<?php final class UserLogin { public function __construct() { } public static function getUserInfo() { if (isset($_COOKIE["user_id"])&&$_COOKIE["user_id"]&&(trim($_COOKIE["user_id"])!="")) { if (isset($_SESSION["USER_INFO"])) return $_SESSION["USER_INFO"]; $dao = new UserDao(); $user = $dao->find($_COOKIE["user_id"]); if ($user) { $_SESSION["USER_INFO"] = $user; setcookie("docloud_sid", session_id(), time() + 36000); setcookie("user_id", $_COOKIE["user_id"], time() + 36000); if (array_key_exists("selected_prj_id", $_COOKIE)) setcookie("selected_prj_id", $_COOKIE["selected_prj_id"], time() + 36000); if (array_key_exists("selected_class_id", $_COOKIE)) setcookie("selected_class_id", $_COOKIE["selected_class_id"], time() + 36000); if (array_key_exists("selected_image_id", $_COOKIE)) setcookie("selected_image_id", $_COOKIE["selected_image_id"], time() + 36000); if (array_key_exists("test_image_ids", $_COOKIE)) setcookie("test_image_ids", $_COOKIE["test_image_ids"], time() + 36000); if (array_key_exists("upload_image_ids", $_COOKIE)) setcookie("upload_image_ids", $_COOKIE["upload_image_ids"], time() + 36000); return $user; } } self::clearCookie(); return null; } public static function setUserInfo($userInfo) { $_SESSION["USER_INFO"] = $userInfo; setcookie("docloud_sid", session_id(), time() + 36000); setcookie("user_id", $userInfo->getId(), time() + 36000); } public static function isLogin() { if (self::getUserInfo()) { return true; } return false; } public static function delUserInfo() { self::clearCookie(); session_destroy(); } private static function clearCookie() { setcookie("docloud_sid", "", time() - 36000); setcookie("user_id", "", time() - 36000); setcookie("selected_prj_id", "", time() - 36000); setcookie("selected_class_id", "", time() - 36000); setcookie("selected_image_id", "", time() - 36000); setcookie("test_image_ids", "", time() - 36000); setcookie("upload_image_ids", "", time() - 36000); } } ?>
2、在用户输入用户名、密码处调用来做相关判定
<?php require_once 'Init.php'; // if logged in, logout if (UserLogin::isLogin() && $_COOKIE["user_id"]==1) { UserLogin::delUserInfo(); } else if (UserLogin::isLogin()){ Utils::redirect('welcome'); } $username = null; $password = null; $msg = ""; if (isset($_POST['username']) && isset($_POST['password'])) { $username = addslashes(trim(stripslashes($_POST ['username']))); $password = addslashes(trim(stripslashes($_POST ['password']))); // validate $errors = LoginValidator::validate($username, $password); if (empty($errors)) { // save $dao = new UserDao(); $user = $dao->findByName($username); $last_login_ip = Utils::getIpAddress(); $user->setLastLoginIp($last_login_ip); $now = new DateTime(); $user->setLastLoginTime($now); $dao->save($user); UserLogin::setUserInfo($user); Flash::addFlash('登录成功!'); Utils::redirect('welcome'); } foreach ($errors as $e) { $msg .= $e->getMessage()."<br>"; } } ?>
以上这篇php同时使用session和cookie来保存用户登录信息的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持帮客之家。