php的一个登录的类 [推荐]


Posted in PHP onMarch 16, 2007

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中执行系统外部命令
Oct 09 PHP
PHP 表单提交给自己
Jul 24 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
Mar 26 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
phpcms中的评论样式修改方法
Oct 21 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
详解在YII2框架中使用UEditor编辑器发布文章
Nov 02 PHP
PHP时间戳和日期相互转换操作实例小结
Dec 18 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 PHP
对Session和Cookie的区分与解释
Mar 16 #PHP
PHP中cookies使用指南
Mar 16 #PHP
PHP学习资料汇总与网址
Mar 16 #PHP
PHP编码规范-php coding standard
Mar 16 #PHP
PHP操作文件方法问答
Mar 16 #PHP
用PHP控制用户的浏览器--ob*函数的使用说明
Mar 16 #PHP
PHP中for循环语句的几种变型
Mar 16 #PHP
You might like
php递归函数中使用return的注意事项
2014/01/17 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
Javascript valueOf 使用方法
2008/12/28 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
vue实现简单表格组件实例详解
2017/04/16 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python中逗号的三种作用实例分析
2015/06/08 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python中的反斜杠问题深入讲解
2019/08/12 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
京东国际站:JOYBUY
2017/11/23 全球购物
学生党员思想汇报
2013/12/28 职场文书
协议书范本
2014/04/23 职场文书
先进基层党组织材料
2014/12/25 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
2016特色励志班级口号
2015/12/24 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS