加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP 验证登陆类分享

发布时间:2020-12-13 02:28:34 所属栏目:PHP教程 来源:网络整理
导读:《PHP实例:PHP 验证登陆类分享》要点: 本文介绍了PHP实例:PHP 验证登陆类分享,希望对您有用。如果有疑问,可以联系我们。 简单的登录类,没有把登录和数据库查询分开 PHP学习 代码如下: /* ?*?? 例子 ?* ?*? $Auth=new Auth(); ?*? $Auth-login("123@123.

《PHP实例:PHP 验证登陆类分享》要点:
本文介绍了PHP实例:PHP 验证登陆类分享,希望对您有用。如果有疑问,可以联系我们。

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

代码如下:

/*
?*?? 例子
?*
?*? $Auth=new Auth();
?*? $Auth->login("123@123.com","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);
??????????? $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)),$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_secure);
??????? setcookie($this->pre_password,$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),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,8)==substr(md5(substr($result,8).$key),8))
??????????? {
??????????????? return substr($result,8);
??????????? }
??????????? else
??????????? {
??????????????? return'';
??????????? }
??????? }
??????? else
??????? {
??????????? return str_replace('=','',base64_encode($result));
??????? }
??? }
??? public function get_ip() {
??????? return $_SERVER['REMOTE_ADDR'];
??? }
}
?>

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

《PHP实例:PHP 验证登陆类分享》是否对您有启发,欢迎查看更多与《PHP实例:PHP 验证登陆类分享》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读