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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
Oct 09 PHP
php 字符转义 注意事项
May 27 PHP
PHP header函数分析详解
Aug 06 PHP
pdo中使用参数化查询sql
Aug 11 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
PHP微信网页授权的配置文件操作分析
May 29 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 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中获取文件扩展名的N种方法小结
2012/02/27 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
PHP检测链接是否存在的代码实例分享
2016/05/06 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
JS操作CSS随机改变网页背景实现思路
2014/03/10 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
2016/07/18 Javascript
JS公共小方法之判断对象是否为domElement的实例
2016/11/25 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
Vuex中mutations与actions的区别详解
2018/03/01 Javascript
Python封装shell命令实例分析
2015/05/05 Python
浅谈python多线程和队列管理shell程序
2015/08/04 Python
Python实现Linux命令xxd -i功能
2016/03/06 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
win10安装python3.6的常见问题
2020/07/01 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
检查接待方案
2014/02/27 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
施工员岗位职责范本
2015/04/11 职场文书
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers