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来保存用户登录信息的实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
如何去设计前端框架能力?星巴克消息开放项目从0到1,从点到面的思考
PHP制作日历,实现在1970年到2020年之间的任何一个月份的输出。上半部分
网友评论