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 新手入门教程
Aug 03 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
浅析PHP原理之变量(Variables inside PHP)
Aug 09 PHP
php命名空间学习详解
Feb 27 PHP
ecshop后台编辑器替换成ueditor编辑器
Mar 03 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
PHP 文件上传后端处理实用技巧方法
Jan 06 PHP
php微信公众号开发之现金红包
Apr 16 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 PHP
laravel框架创建授权策略实例分析
Nov 22 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实现的简单压缩英文字符串的代码
2008/04/24 PHP
php中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
php socket客户端及服务器端应用实例
2014/07/04 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
理解Javascript_03_javascript全局观
2010/10/11 Javascript
js中判断文本框是否为空的两种方法
2011/07/31 Javascript
浅谈Javascript的静态属性和原型属性
2015/05/07 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
Python里隐藏的“禅”
2014/06/16 Python
python使用Berkeley DB数据库实例
2014/09/26 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python实现换位加密算法的示例
2018/10/14 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
Python 中判断列表是否为空的方法
2019/11/24 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
Python 如何反方向迭代一个序列
2020/07/28 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
公司中秋节活动方案
2014/02/12 职场文书
高中运动会入场词
2014/02/14 职场文书
环境卫生标语
2014/06/09 职场文书
五一活动标语
2014/06/30 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
单位员工收入证明样本
2014/10/09 职场文书
门球健将观后感
2015/06/16 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server
图神经网络GNN算法
2022/05/11 Python