-
-
最終類別 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_ygOOK" )
- setcookie("selected_prj_id", $_COOKIE["selected_prj_id"], time() + 36000);
-
- if (array_key_exists("selected_class_ookie", $lected_class_p)(clected_class_p), ", $_COOKIE["selected_class_id"], time() + 36000);
-
- if (array_key_exists("selected_image_id", $_COOKIE))
- setcookieage(selected_image( ], time() + 36000);
-
- if (array_key_exists("test_image_ids", $_COOKIE))
- setcookie("test_image_ids", $_COOKIE))
- setcookie("test_image_ids", $_COOKIE[" test_image_idookies" ;
-
- if (array_key_exists("upload_image_ids", $_COOKIE))
- setcookie("upload_image_ids", $_COOKIE["upload_image_ids"], time(0) + 36000);
- }
- }
- self::clearCookie();
- return null;
- }
public static function setUserInfo($userInfo) {
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;
- }
- 公用靜態函式delUserInfo() {
- self::clearCookie();
- session_destroy();
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- 私有靜態函式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_time" ) - 36000);
- setcookie("test_image_ids", "", time( ) - 36000);
- setcookie("upload_image_ids", "", time() - 36000);
- }
/**
- * 登入驗證器。
- */
- final class LoginValidator {
- private function __construct() {
- }
/ **
- * 驗證給定的使用者名稱和密碼。
- * @param $username 和 $password 進行驗證
- * @return array {@link Error} s 陣列
- */
- public static function validate($username, $password) {
- $errors = array();
- $username = trim($username);
- if ( ! $username) {
- $errors[] = new Error('username', '使用者名稱不能為空。');
- } elseif (strlen($username) $error[ ] = new Error('使用者名稱', '使用者名稱長度不能小於3個字元。');
- } elseif (strlen($username)>30) { $errors[] = new Error('使用者名稱', '使用者名稱長度不能超過30個字元。 )) { $errors[] = new Error('用戶名', '用戶名必須以字母開頭。'); } elseif (!preg_match('/^[A-Za-z0-9_ ]+ $/', $username)) { $errors[] = new Error('username', '使用者名稱只能是字母、數字以及底線( _ )的組合。'); } elseif ( !trim($password)) { $errors[] = new Error('password', '密碼不能為空。');
- } else {
- // 檢查use 是否存在
- $dao = new UserDao();
- $user = $dao->findByName($username);
if ($user) {
- if (!($user->getPassword() == sha1($user->getSalt() . $password))) {
- $errors[] = 新錯誤('密碼', '使用者名稱或密碼錯誤。');
- }
- } else {
- $errors[] = new Error('使用者名稱', '使用者名稱不存在。 ');
- }
- }
- return $errors;
- }
- }
/**
- * 驗證錯誤。
- */
- 最終類別錯誤{
- 私人$source;
- 私人$message;
/**
- * 建立新錯誤。
- * @param mix $source 錯誤來源
- * @param string $message 錯誤訊息
- */
- function __construct($source, $message) {
- $ this->source = $source;
- $this->message = $message;
- }
/**
- * 取得錯誤來源。
- * @return 錯誤的混合來源
- */
- public function getSource() {
- return $this->source;
- }
/**
- * 取得錯誤訊息。
- * @return 字串錯誤訊息
- */
- public function getMessage() {
- return $this-> message;
- }
- }
//如果登錄,註銷頁面的跳轉類在http://www.cnblogs.com/setsail/archive/2012/12/ 18/2823231.html裡這裡不再重複重寫
- if (UserLogin::isLogin( ) && $_COOKIE["user_id"]==1) {
- UserLogin::delUserInfo();
- } elseif (UserLogin::isLogin()){
- Utils::redirect('歡迎') ;
- }
$使用者名稱= null;
- $密碼= null ;
- $msg = "";
$ username = addslashes(trim(stripslashes($_POST ['使用者名稱'])));
- $password = addslashes(trim(stripslashes($_POST ['password'])));
- // 驗證
- $errors = LoginValidator::validate($username, $password);
-
- if (empty($errors)) {
- // 儲存
- $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('歡迎') ;
- }
-
- foreach ($errors as $e) {
- $msg .= $e->getMessage(). "
";
- }
- }
- ?>
複製程式碼
|