建站极客
网络编程 PHP编程 正文
php的一个登录的类 [推荐]
所属分类:
网络编程 / PHP编程
阅读数:
1852
收藏 0
赞 0
分享
PHP代码: <? /* * 名称:CnkknD PHP Login Class * 描述:PHP用于登录的类,基于MySQL * 作者:Daniel King,cnkknd@163.com * 日期:2003/8/25 */ class Login { var $username; //用户名 var $userpass; //密码 var $userid; //用户id var $userlevel; //用户级别 var $authtable="account"; //验证用数据表 var $usecookie=true; //使用cookie保存sessionid var $cookiepath='/'; //cookie路径 var $cookietime=108000; //cookie有效时间 var $err_mysql="mysql error"; //mysql出错提示 var $err_username="username invalid"; //用户名无效提示 var $err_user="user invalid"; //用户无效提示(被封禁) var $err_password="password error"; //密码错误提示 var $err; //出错提示 var $errorreport=false; //显示错误 function Login($dbserv,$dbport,$dbuser,$dbpass,$dbname) //构造函数,连接数据库 { if(@mysql_pconnect($dbserv.":".$dbport,$dbuser,$dbpass)) { mysql_select_db($dbname); } else { $this->errReport($this->err_mysql); $this->err=$this->err_mysql; } } function isLoggedin() //判断是否登录 { if(isset($_COOKIE['sid'])) //如果cookie中保存有sid { session_id($_COOKIE['sid']); session_start(); $this->username=$_SESSION['username']; $this->userid=$_SESSION['userid']; $this->userlevel=$_SESSION['userlevel']; return true; } else //如果cookie中未保存sid,则直接检查session { session_start(); if(isset($_SESSION['username'])) return true; } return false; } function userAuth($username,$userpass) //用户认证 { $this->username=$username; $this->userpass=$userpass; $query="select * from `".$this->authtable."` where `username`='$username';"; $result=mysql_query($query); if(mysql_num_rows($result)!=0) //找到此用户 { $row=mysql_fetch_array($result); if($row['bannd']==1) //此用户被封禁 { $this->errReport($this->err_user); $this->err=$this->err_user; return false; } elseif(md5($userpass)==$row['userpass']) //密码匹配 { $this->userid=$row['id']; $this->userlevel=$row['userlevel']; return true; } else //密码不匹配 { $this->errReport($this->err_password); $this->err=$this->err_password; return false; } } else //没有找到此用户 { $this->errReport($this->err_username); $this->err=$this->err_username; return false; } } function setSession() //置session { $sid=uniqid('sid'); //生成sid session_id($sid); session_start(); $_SESSION['username']=$this->username; //给session变量赋值 $_SESSION['userid']=$this->userid; //.. $_SESSION['userlevel']=$this->userlevel; //.. if($this->use_cookie) //如果使用cookie保存sid { if(!setcookie('sid',$sid,time()+$this->cookietime,$this->cookiepath)) $this->errReport("set cookie failed"); } else setcookie('sid','',time()-3600); //清除cookie中的sid } function userLogout() //用户注销 { session_start(); unset($_SESSION['username']); //清除session中的username if(setcookie('sid','',time()-3600)) //清除cookie中的sid return true; else return false; } function errReport($str) //报错 { if($this->error_report) echo "ERROR: $str"; } } ?> mysql中表的结构 代码: CREATE TABLE `account` ( `id` bigint(20) NOT NULL auto_increment, `username` varchar(255) NOT NULL default '', `userpass` varchar(255) NOT NULL default '', `banned` tinyint(1) NOT NULL default '0', `userlevel` tinyint(4) NOT NULL default '0', PRIMARY KEY (`id`) ) 使用一例 PHP代码: <? include "../myclasses/Login.php"; $dbserv="localhost"; $dbport="3306"; $dbuser="root"; $dbpass="123456"; $dbname="test"; $login=new Login($dbserv,$dbport,$dbuser,$dbpass,$dbname); $login->error_report=true; $login->cookietime=3600*24*30; if($login->isLoggedin()) { echo $login->username." has aready logged in"; } elseif($login->userAuth("danielking","1234")) { echo "login successfully"; $login->setSession(); } echo "<p>...</p>"; /* if($login->userLogout()) echo "logged out"; else echo "logout failed"; */ ?>
php实现在服务器端调整图片大小的方法 这篇文章主要介绍了php实现在服务器端调整图片大小的方法,实例分析了imageResizer与loadimage操作图片的相关技巧,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
php动态绑定变量的用法 这篇文章主要介绍了php动态绑定变量的用法,涉及php变量的判定与动态定义的相关技巧,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
php实现读取和写入tab分割的文件 这篇文章主要介绍了php实现读取和写入tab分割的文件,涉及php文件读写及字符串操作的相关技巧,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
php自动给网址加上链接的方法 这篇文章主要介绍了php自动给网址加上链接的方法,可实现对本文中的网址加上链接的功能,涉及正则匹配的相关技巧,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
php获取指定范围内最接近数的方法 这篇文章主要介绍了php获取指定范围内最接近数的方法,可实现根据给定区间长度划分各个区间,并在其中寻找与给定数最接近的数,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
php使用ob_flush不能每隔一秒输出原理分析 这篇文章主要介绍了php使用ob_flush不能每隔一秒输出原理,较为详细的分析了php使用ob_flush的相关原理与Linux下使用cli方式的使用方法,需要的朋友可以参考下
评论 0
收藏 0
赞 0
分享
查看更多