基于MySQL,PHP登录类(转)

<? 
/* 
* 描述:PHP用于登录的类,基于MySQL 
*/ 

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`) 
)  


使用例子
<? 
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"; 
*/ 
?> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值