程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP 驗證登陸類分享

PHP 驗證登陸類分享

編輯:關於PHP編程

     本文給大家介紹的是用php實現的用戶登錄與驗證的一段代碼,沒有把登錄和數據庫查詢分開,有需要的朋友,可以參考學習下

       

    簡單的登錄類,沒有把登錄和數據庫查詢分開

     

    代碼如下:
    /*
    * 例子
    *
    * $Auth=new Auth();
    * $Auth->login("[email protected]","123");
    * $Auth->logout();
    * echo $r->init();
    *
    **/

     

    驗證登陸類

     

    代碼如下:
    <?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'];
    }
    }
    ?>

     

    以上就是本文的全部內容了,希望大家能夠喜歡。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved