当前位置:  开发笔记 > 编程语言 > 正文

php根据session与cookie写的用户登录状态操作类

php根据session与cookie写的用户登录状态操作类

  1. final class UserLogin {

  2. public function __construct() {
  3. }

  4. public static function getUserInfo() {

  5. if (isset($_COOKIE["user_id"])&&$_COOKIE["user_id"]&&(trim($_COOKIE["user_id"])!="")) {
  6. if (isset($_SESSION["USER_INFO"]))
  7. return $_SESSION["USER_INFO"];
  8. $dao = new UserDao();
  9. $user = $dao->find($_COOKIE["user_id"]);
  10. if ($user) {
  11. $_SESSION["USER_INFO"] = $user;
  12. setcookie("docloud_sid", session_id(), time() + 36000);
  13. setcookie("user_id", $_COOKIE["user_id"], time() + 36000);
  14. if (array_key_exists("selected_prj_id", $_COOKIE))
  15. setcookie("selected_prj_id", $_COOKIE["selected_prj_id"], time() + 36000);
  16. if (array_key_exists("selected_class_id", $_COOKIE))
  17. setcookie("selected_class_id", $_COOKIE["selected_class_id"], time() + 36000);
  18. if (array_key_exists("selected_image_id", $_COOKIE))
  19. setcookie("selected_image_id", $_COOKIE["selected_image_id"], time() + 36000);
  20. if (array_key_exists("test_image_ids", $_COOKIE))
  21. setcookie("test_image_ids", $_COOKIE["test_image_ids"], time() + 36000);
  22. if (array_key_exists("upload_image_ids", $_COOKIE))
  23. setcookie("upload_image_ids", $_COOKIE["upload_image_ids"], time() + 36000);
  24. return $user;
  25. }
  26. }
  27. self::clearCookie();
  28. return null;
  29. }

  30. public static function setUserInfo($userInfo) {

  31. $_SESSION["USER_INFO"] = $userInfo;
  32. setcookie("docloud_sid", session_id(), time() + 36000);
  33. setcookie("user_id", $userInfo->getId(), time() + 36000);
  34. }

  35. public static function isLogin() {

  36. if (self::getUserInfo()) {
  37. return true;
  38. }
  39. return false;
  40. }

  41. public static function delUserInfo() {

  42. self::clearCookie();
  43. session_destroy();
  44. }
  45. private static function clearCookie() {
  46. setcookie("docloud_sid", "", time() - 36000);
  47. setcookie("user_id", "", time() - 36000);
  48. setcookie("selected_prj_id", "", time() - 36000);
  49. setcookie("selected_class_id", "", time() - 36000);
  50. setcookie("selected_image_id", "", time() - 36000);
  51. setcookie("test_image_ids", "", time() - 36000);
  52. setcookie("upload_image_ids", "", time() - 36000);
  53. }
  54. }
  55. ?>

2、在用户输入用户名、密码处调用来做相关判定

  1. require_once 'Init.php';

  2. // if logged in, logout

  3. if (UserLogin::isLogin() && $_COOKIE["user_id"]==1) {
  4. UserLogin::delUserInfo();
  5. }
  6. else if (UserLogin::isLogin()){
  7. Utils::redirect('welcome');
  8. }

  9. $username = null;

  10. $password = null;

  11. $msg = "";

  12. if (isset($_POST['username']) && isset($_POST['password'])) {

  13. $username = addslashes(trim(stripslashes($_POST ['username'])));
  14. $password = addslashes(trim(stripslashes($_POST ['password'])));
  15. // validate
  16. $errors = LoginValidator::validate($username, $password);
  17. if (empty($errors)) {
  18. // save
  19. $dao = new UserDao();
  20. $user = $dao->findByName($username);
  21. $last_login_ip = Utils::getIpAddress();
  22. $user->setLastLoginIp($last_login_ip);
  23. $now = new DateTime();
  24. $user->setLastLoginTime($now);
  25. $dao->save($user);
  26. UserLogin::setUserInfo($user);
  27. Flash::addFlash('登录成功!');
  28. Utils::redirect('welcome');
  29. }
  30. foreach ($errors as $e) {
  31. $msg .= $e->getMessage()."
    ";
  32. }
  33. }
  34. ?>

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有