>백엔드 개발 >PHP 튜토리얼 >PHP로 작성된 로그인 확인 클래스

PHP로 작성된 로그인 확인 클래스

WBOY
WBOY원래의
2016-07-25 09:04:24859검색
  1. 최종 클래스 UserLogin {

  2. 공용 함수 __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. /**

  56. * 로그인 유효성 검사기.
  57. */
  58. final class LoginValidator {
  59. private function __construct() {
  60. }

  61. /**

  62. * 주어진 사용자 이름과 비밀번호를 확인하세요.
  63. * @param $username과 $password를 확인하세요
  64. * @return array {@link Error} s의 배열
  65. */
  66. 공개 정적 함수 검증($username, $password) {
  67. $errors = array();
  68. $username = Trim($username);
  69. if ( !$username) {
  70. $errors[] = new Error('username', '用户name不能为空。');
  71. } elseif (strlen($username)<3) {
  72. $ error[] = new Error('username', '용도 이름이 불특정 3个字符');
  73. } elseif (strlen($username)>30) {
  74. $errors[] = new Error ('사용자 이름', '용도 이름이 불변 能超过30个字符。');
  75. } elseif (!preg_match('/^[A-Za-z] $/',substr($username, 0, 1) )) {
  76. $errors[] = new Error('사용자 이름', '사용명必须以字母开头。');
  77. } elseif (!preg_match('/^[A-Za-z0-9_] $/', $username)) {
  78. $errors[] = new Error('username', '사용용 이름只能是字母、数字以及下划线( _ )적합합。');
  79. } elseif ( !trim($password)) {
  80. $errors[] = new Error('password', '密码不能为空。');
  81. } else {
  82. // 사용 여부 확인
  83. $dao = new UserDao();
  84. $user = $dao->findByName($username);< /p>
  85. if ($user) {

  86. if (!($user->getPassword() == sha1($user->getSalt() . $password))) {
  87. $errors[] = 새로운 오류 ('비밀번호', '사용 이름或密码错误。');
  88. }
  89. } else {
  90. $errors[] = new Error('사용자 이름', '사용 이름 불存재。');
  91. }
  92. }
  93. return $errors;
  94. }
  95. }

  96. /**

  97. * 유효성 검사 오류입니다.
  98. */
  99. 최종 클래스 오류 {
  100. 비공개 $source;
  101. 비공개 $message;

  102. /**

  103. * 새로운 오류를 생성합니다.
  104. * @param 오류의 $source 혼합
  105. * @param string $message 오류 메시지
  106. */
  107. 함수 __construct($source, $message) {
  108. $this->source = $source;
  109. $this->message = $message;
  110. }

  111. /**

  112. * 오류의 소스를 가져옵니다.
  113. * @return 오류의 혼합 소스
  114. */
  115. 공용 함수 getSource() {
  116. return $this->source;
  117. }

  118. /**

  119. * 오류 메시지를 받습니다.
  120. * @return 문자열 오류 메시지
  121. */
  122. 공용 함수 getMessage() {
  123. return $this->message;
  124. }
  125. }

  126. // 로그인했다면 로그아웃하세요. ) && $_COOKIE["user_id"]==1) {

  127. UserLogin::delUserInfo();
  128. }elseif (UserLogin::isLogin()){
  129. Utils::redirect('welcome') ;
  130. }

  131. $username = null;

  132. $password = null;
  133. $msg = "";

  134. $username = addedlashes(trim(stripslashes($_POST ['username'])));
  135. $password = addlashes(trim(stripslashes($_POST ['password'])));
  136. // 유효성 검사
  137. $errors = LoginValidator::validate($username, $password);
  138. if (empty($errors)) {
  139. // 저장
  140. $dao = new UserDao();
  141. $user = $dao->findByName($username);
  142. $last_login_ip = Utils::getIpAddress();
  143. $user->setLastLoginIp($last_login_ip);
  144. $now = new DateTime();
  145. $user->setLastLoginTime($now);
  146. $dao->save($user);
  147. UserLogin::setUserInfo($user);
  148. Flash::addFlash('登录成功!');
  149. Utils::redirect('welcome') ;
  150. }
  151. foreach ($errors as $e) {
  152. $msg .= $e->getMessage()."
    ";
  153. }
  154. }
  155. ?>

复代码

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