php封装的用户登陆验证的类,实现了用户登陆的常用功能,包含cookie和session的设置
class Auth { var $user_id; var $username; var $password; var $ok; var $salt = "34asdf34"; var $domain = ".domain.com"; function Auth() { global $db; $this->user_id = 0; $this->username = "Guest"; $this->ok = false; if(!$this->check_session()) $this->check_cookie(); return $this->ok; } function check_session() { if(!empty($_SESSION['auth_username']) && !empty($_SESSION['auth_password'])) return $this->check($_SESSION['auth_username'], $_SESSION['auth_password']); else return false; } function check_cookie() { if(!empty($_COOKIE['auth_username']) && !empty($_COOKIE['auth_password'])) return $this->check($_COOKIE['auth_username'], $_COOKIE['auth_password']); else return false; } function login($username, $password) { global $db; $db->query("SELECT user_id FROM users WHERE username = '$username' AND password = '$password'"); if(mysql_num_rows($db->result) == 1) { $this->user_id = mysql_result($db->result, 0, 0); $this->username = $username; $this->ok = true; $_SESSION['auth_username'] = $username; $_SESSION['auth_password'] = md5($password . $this->salt); setcookie("auth_username", $username, time()+60*60*24*30, "/", $this->domain); setcookie("auth_password", md5($password . $this->salt), time()+60*60*24*30, "/", $this->domain); return true; } return false; } function check($username, $password) { global $db; $db->query("SELECT user_id, password FROM users WHERE username = '$username'"); if(mysql_num_rows($db->result) == 1) { $db_password = mysql_result($db->result, 0, 1); if(md5($db_password . $this->salt) == $password) { $this->user_id = mysql_result($db->result, 0, 0); $this->username = $username; $this->ok = true; return true; } } return false; } function logout() { $this->user_id = 0; $this->username = "Guest"; $this->ok = false; $_SESSION['auth_username'] = ""; $_SESSION['auth_password'] = ""; setcookie("auth_username", "", time() - 3600, "/", $this->domain); setcookie("auth_password", "", time() - 3600, "/", $this->domain); } }