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上传图片、删除图片实现代码
May 12 PHP
基于php设计模式中工厂模式详细介绍
May 15 PHP
php调整gif动画图片尺寸示例代码分享
Dec 05 PHP
采用memcache在web集群中实现session的同步会话
Jul 05 PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
PHP实现JS中escape与unescape的方法
Jul 11 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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
论坛头像随机变换代码
2006/10/09 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
php发送邮件的问题详解
2015/06/22 PHP
php表单提交实例讲解
2015/11/12 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
CSS和JS标签style属性对照表(方便js开发的朋友)
2010/11/11 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
JavaScript小技巧整理篇(非常全)
2016/01/26 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
Javascript es7中比较实用的两个方法示例
2017/07/21 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
JS如何生成动态列表
2020/09/22 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
python清空命令行方式
2020/01/13 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
美国特价机票专家:Airfarewatchdog
2018/01/24 全球购物
机械工程师求职自我评价
2013/09/23 职场文书
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
中学生思想品德评语
2014/12/31 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Python3.10的一些新特性原理分析
2021/09/15 Python