Home  >  Article  >  php教程  >  PHP 验证登陆类分享

PHP 验证登陆类分享

WBOY
WBOYOriginal
2016-06-06 20:06:46960browse

本文给大家介绍的是用php实现的用户登录与验证的一段代码,没有把登录和数据库查询分开,有需要的朋友,可以参考学习下

简单的登录类,没有把登录和数据库查询分开

复制代码 代码如下:


/*
 *   例子
 *
 *  $Auth=new Auth();
 *  $Auth->login("123@123.com","123");
 *  $Auth->logout();
 *  echo $r->init();    
 *
**/

验证登陆类

复制代码 代码如下:


/*
 *
 * @ID:      验证登陆类
 *
 * @class:   Auth.class.php
 *
 * @auther:  欣儿
 *
 * @time:    2015/03/12
 *
 * @web:    
 *
**/
class Auth {
    //外部设置
    //cookie设置
    var $cookie_time;//         7200
    var $cookie_where;//        'http://www.jb51.net/'
    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']:'http://www.jb51.net/';
        $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         {
            $rndkey[$i]=ord($key[$i%$key_length]);
            $box[$i]=$i;
        }
        for($j=$i=0;$i         {
            $j=($j+$box[$i]+$rndkey[$i])%256;
            $tmp=$box[$i];
            $box[$i]=$box[$j];
            $box[$j]=$tmp;
        }
        for($a=$j=$i=0;$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'];
    }
}
?>

以上就是本文的全部内容了,,希望大家能够喜欢。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn