>  기사  >  백엔드 개발  >  세션과 쿠키를 기반으로 작성된 PHP 사용자 로그인 상태 작업 클래스

세션과 쿠키를 기반으로 작성된 PHP 사용자 로그인 상태 작업 클래스

WBOY
WBOY원래의
2016-07-25 09:03:09920검색
  1. final class UserLogin {
  2. public function __construct() {
  3. }
  4. 공개 정적 함수 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. null 반환;
  29. }

  30. 공개 정적 함수 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. < p> 공개 정적 함수 delUserInfo() {
  42. self::clearCookie();
  43. session_destroy();
  44. }
  45. 비공개 정적 함수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 (UserLogin::isLogin() && $_COOKIE["user_id"]==1) {
  3. UserLogin::delUserInfo();
  4. }
  5. else if (UserLogin::isLogin()){
  6. Utils::redirect('welcome');
  7. }

  8. $username = null;

  9. $password = null;

  10. $msg = "";

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

  12. $username = addlashes(trim(stripslashes($_POST ['username'])));
  13. $password = addlashes(trim(stripslashes($_POST ['password']) ));
  14. // 유효성 검사
  15. $errors = LoginValidator::validate($username, $password);
  16. if (empty($errors)) {
  17. // 저장
  18. $dao = new UserDao();
  19. $user = $dao->findByName($username);
  20. $last_login_ip = Utils::getIpAddress();
  21. $user->setLastLoginIp($ last_login_ip);
  22. $now = new DateTime();
  23. $user->setLastLoginTime($now);
  24. $dao->save($user);
  25. UserLogin::setUserInfo( $user);
  26. Flash::addFlash('로그인에 성공했습니다! ');
  27. Utils::redirect('welcome');
  28. }
  29. foreach ($errors as $e) {
  30. $msg .= $e->getMessage() ."
    ";
  31. }
  32. }
  33. ?>

코드 복사


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.