如何在php中利用session与cookie保存用户的登录信息
发布时间:-12-18 15:49:56
来源:亿速云
阅读:95
作者:Leah
如何在php中利用session与cookie保存用户的登录信息?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
1、用户登录状态操作类UserLogin<?php
finalclassUserLogin{
publicfunction__construct(){
}
publicstaticfunctiongetUserInfo(){
if(isset($_COOKIE["user_id"])&&$_COOKIE["user_id"]&&(trim($_COOKIE["user_id"])!="")){
if(isset($_SESSION["USER_INFO"]))
return$_SESSION["USER_INFO"];
$dao=newUserDao();
$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();
returnnull;
}
publicstaticfunctionsetUserInfo($userInfo){
$_SESSION["USER_INFO"]=$userInfo;
setcookie("docloud_sid",session_id(),time()+36000);
setcookie("user_id",$userInfo->getId(),time()+36000);
}
publicstaticfunctionisLogin(){
if(self::getUserInfo()){
returntrue;
}
returnfalse;
}
publicstaticfunctiondelUserInfo(){
self::clearCookie();
session_destroy();
}
privatestaticfunctionclearCookie(){
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';
//ifloggedin,logout
if(UserLogin::isLogin()&&$_COOKIE["user_id"]==1){
UserLogin::delUserInfo();
}
elseif(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=newUserDao();
$user=$dao->findByName($username);
$last_login_ip=Utils::getIpAddress();
$user->setLastLoginIp($last_login_ip);
$now=newDateTime();
$user->setLastLoginTime($now);
$dao->save($user);
UserLogin::setUserInfo($user);
Flash::addFlash('登录成功!');
Utils::redirect('welcome');
}
foreach($errorsas$e){
$msg.=$e->getMessage()."
";
}
}
?>
关于如何在php中利用session与cookie保存用户的登录信息问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。