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()."<br>"; } } ?>
以上这篇php同时使用session和cookie来保存用户登录信息的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。