如何在php中利用session与cookie保存用户的登录信息
发布时间:2020-12-18 15:49:56
来源:亿速云
阅读:95
作者:Leah
如何在php中利用session与cookie保存用户的登录信息?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
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()."
";
}
}
?>
关于如何在php中利用session与cookie保存用户的登录信息问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。