Maison > Article > développement back-end > Utilisation de la classe de connexion de vérification PHP
Cet article vous présente un morceau de code pour la connexion et la vérification des utilisateurs à l'aide de PHP. Il ne sépare pas la connexion et la requête de base de données. Les amis dans le besoin peuvent se référer à la
Classe de connexion simple, pas de connexion séparée et. requête de base de données
Le code est le suivant :
/* * 例子 * * $Auth=new Auth(); * $Auth->login("123@123.com","123"); * $Auth->logout(); * echo $r->init(); * **/
Classe de connexion de vérification
Le code est le suivant :
<?php /* * * @ID: 验证登陆类 * * @class: Auth.class.php * * @auther: 欣儿 * * @time: 2015/03/12 * * @web: http://my.oschina.net/xinger * **/ class Auth { //外部设置 //cookie设置 var $cookie_time;// 7200 var $cookie_where;// '/' var $cookie_domain;// 'yourweb.com' var $cookie_secure;// 1和0 //数据库设置 var $select_uid;// 'uid' var $select_table;// 'user' var $select_usersname;// 'email' var $select_password;// 'password' //盐 var $salt;// "12332" var $guest_name;// 'Guest' //用户获取值 var $user_id; var $username; var $ok; var $pre;// 'auth_' var $depr;// '-' //内部变量 private $pre_username; private $pre_password; public function __construct($config=array()){ $this->set($config); $this->pre_username=sha1(md5($this->pre.'username')); $this->pre_password=sha1(md5($this->pre.'password')); } public function set($config){ $this->cookie_time = isset($config['cookie_time'])?$config['cookie_time']: 7200; $this->cookie_where = isset($config['cookie_where'])?$config['cookie_where']:'/'; $this->cookie_domain = isset($config['cookie_domain'])?$config['cookie_domain']:''; $this->cookie_secure = isset($config['cookie_secure'])?$config['cookie_secure']:''; $this->select_uid = isset($config['select_uid'])?$config['select_uid']:'uid'; $this->select_table = isset($config['select_table'])?$config['select_table']:'table'; $this->select_usersname = isset($config['select_usersname'])?$config['select_usersname']:'user_name'; $this->select_password = isset($config['select_password'])?$config['select_password']:'password'; $this->salt = isset($config['salt'])?$config['salt']:'sghsdghsdg';// $this->guest_name = isset($config['guest_name'])?$config['guest_name']:'Guest';// $this->pre = isset($config['auth'])?$config['auth']:'auth_'; $this->depr = isset($config['depr'])?$config['depr']:'-'; } // public function init(){ $this->user_id = 0; $this->username = $this->guest_name; $this->ok = false; if(!$this->check_session()){ $this->check_cookie(); } return $this->ok; } //验证SESSION private function check_session(){ if(!empty($_SESSION[$this->pre_username])&&!empty($_SESSION[$this->pre_password])){ return $this->check($_SESSION[$this->pre_username],$_SESSION[$this->pre_password]); } else { return false; } } //验证COOKIE private function check_cookie(){ if(!empty($_COOKIE[$this->pre_username])&&!empty($_COOKIE[$this->pre_password])){ return $this->check($_COOKIE[$this->pre_username],$_COOKIE[$this->pre_password]); } else { return false; } } //登陆 public function login($username,$password){ $sql = "select ".$this->select_uid." from ".$this->select_table." where ".$this->select_usersname."='$username' and ".$this->select_password."='$password'"; $result = mysql_query($sql); $rows = mysql_num_rows($sql); if($rows==1){ $this->user_id = mysql_result($result,0,0); $this->username = $username; $this->ok = true; $username = $username.$this->depr.$this->get_ip(); $user_name = $this->encrypt($username,'E',$this->salt); $_SESSION[$this->pre_username]=$user_name; $_SESSION[$this->pre_password]=md5(md5($password,$this->salt)); setcookie($this->pre_username,$user_name,time()+$this->cookie_time,$this->cookie_where,$this->cookie_domain,$this->cookie_secure); setcookie($this->pre_password,md5(md5($password,$this->salt)),time()+$this->cookie_time,$this->cookie_where,$this->cookie_domain,$this->cookie_secure); return true; } return false; } //验证 private function check($username,$password){ $user_name = $this->encrypt($username,'D',$this->salt); $name = explode($this->depr, $user_name); $username = $name[0]; $ip = isset($name[1]) ? $name[1] : NULL; if($ip !== $this->get_ip()) return false; static $vars = array(); if(!empty($vars)&&is_array($vars)&&isset($vars[$username.$password])){ $this->user_id = $vars['user_id']; $this->username = $vars['username']; $this->ok = $vars['ok']; return true; } $sql = "select ".$this->select_uid.",".$this->select_password." from ".$this->select_table." where ".$this->select_usersname."='$username'"; $query = mysql_query($sql); $result = mysql_fetch_array($query); $row = mysql_num_rows($sql); if($row == 1){ $db_password=$result[$this->select_password]; if(md5(md5($db_password,$this->salt)) == $password){ $this->user_id = $vars['user_id'] = $result[$this->select_uid]; $this->username = $vars['username'] = $username; $this->ok = $vars['ok'] = true; $vars[$username.$password] = md5($username.$password); return true; } } return false; } //退出 public function logout(){ $this->user_id = 0; $this->username = $this->guest_name; $this->ok = false; $_SESSION[$this->pre_username]=""; $_SESSION[$this->pre_password]=""; setcookie($this->pre_username,"",time()-$this->cookie_time,$this->cookie_where,$this->cookie_domain,$this->cookie_secure); setcookie($this->pre_password,"",time()-$this->cookie_time,$this->cookie_where,$this->cookie_domain,$this->cookie_secure); } //加密 public function encrypt($string,$operation,$key='') { $key=md5($key); $key_length=strlen($key); $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; $string_length=strlen($string); $rndkey=$box=array(); $result=''; for($i=0;$i<=255;$i++) { $rndkey[$i]=ord($key[$i%$key_length]); $box[$i]=$i; } for($j=$i=0;$i<256;$i++) { $j=($j+$box[$i]+$rndkey[$i])%256; $tmp=$box[$i]; $box[$i]=$box[$j]; $box[$j]=$tmp; } for($a=$j=$i=0;$i<$string_length;$i++) { $a=($a+1)%256; $j=($j+$box[$a])%256; $tmp=$box[$a]; $box[$a]=$box[$j]; $box[$j]=$tmp; $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256])); } if($operation=='D') { if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)) { return substr($result,8); } else { return''; } } else { return str_replace('=','',base64_encode($result)); } } public function get_ip() { return $_SERVER['REMOTE_ADDR']; } } ?>
Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Recommandations associées :
La fonction de conversion du tableau PHP en format Apple plist XML ou texte
php utilise curl pour se connecter au site Web et obtenir des informations La méthode
La méthode de lecture php et de correspondance régulière avec le contenu de l'e-mail
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!