PHP 登录类
1 class Auth 2 { 3 var $user_id; 4 var $username; 5 var $password; 6 var $ok; 7 var $salt = "34asdf34"; 8 var $domain = ".domain.com"; 9 10 function Auth() 11 { 12 global $db; 13 14 $this->user_id = 0; 15 $this->username = "Guest"; 16 $this->ok = false; 17 18 if(!$this->check_session()) $this->check_cookie(); 19 20 return $this->ok; 21 } 22 23 function check_session() 24 { 25 if(!empty($_SESSION['auth_username']) && !empty($_SESSION['auth_password'])) 26 return $this->check($_SESSION['auth_username'], $_SESSION['auth_password']); 27 else 28 return false; 29 } 30 31 function check_cookie() 32 { 33 if(!empty($_COOKIE['auth_username']) && !empty($_COOKIE['auth_password'])) 34 return $this->check($_COOKIE['auth_username'], $_COOKIE['auth_password']); 35 else 36 return false; 37 } 38 39 function login($username, $password) 40 { 41 global $db; 42 $db->query("SELECT user_id FROM users WHERE username = '$username' AND password = '$password'"); 43 if(mysql_num_rows($db->result) == 1) 44 { 45 $this->user_id = mysql_result($db->result, 0, 0); 46 $this->username = $username; 47 $this->ok = true; 48 49 $_SESSION['auth_username'] = $username; 50 $_SESSION['auth_password'] = md5($password . $this->salt); 51 setcookie("auth_username", $username, time()+60*60*24*30, "/", $this->domain); 52 setcookie("auth_password", md5($password . $this->salt), time()+60*60*24*30, "/", $this->domain); 53 54 return true; 55 } 56 return false; 57 } 58 59 function check($username, $password) 60 { 61 global $db; 62 $db->query("SELECT user_id, password FROM users WHERE username = '$username'"); 63 if(mysql_num_rows($db->result) == 1) 64 { 65 $db_password = mysql_result($db->result, 0, 1); 66 if(md5($db_password . $this->salt) == $password) 67 { 68 $this->user_id = mysql_result($db->result, 0, 0); 69 $this->username = $username; 70 $this->ok = true; 71 return true; 72 } 73 } 74 return false; 75 } 76 77 function logout() 78 { 79 $this->user_id = 0; 80 $this->username = "Guest"; 81 $this->ok = false; 82 83 $_SESSION['auth_username'] = ""; 84 $_SESSION['auth_password'] = ""; 85 86 setcookie("auth_username", "", time() - 3600, "/", $this->domain); 87 setcookie("auth_password", "", time() - 3600, "/", $this->domain); 88 } 89 90 }
没有什么问题是一个FOR循环解决不了的,如果有那就是两个!