PHP登录对用户名、密码进行验证及登录状态操作
2012-12-18 15:08
721 查看
<?php
finalclassUserLogin{ publicfunction__construct(){ } publicstaticfunctiongetUserInfo(){ if(isset($_COOKIE["user_id"])&&$_COOKIE["user_id"]&&(trim($_COOKIE["user_id"])!="")){ if(isset($_SESSION["USER_INFO"])) return$_SESSION["USER_INFO"]; $dao=newUserDao(); $user=$dao->find($_COOKIE["user_id"]); if($user){ $_SESSION["USER_INFO"]=$user; setcookie("docloud_sid",session_id(),time()+36000); setcookie("user_id",$_COOKIE["user_id"],time()+36000); if(array_key_exists("selected_prj_id",$_COOKIE)) setcookie("selected_prj_id",$_COOKIE["selected_prj_id"],time()+36000); if(array_key_exists("selected_class_id",$_COOKIE)) setcookie("selected_class_id",$_COOKIE["selected_class_id"],time()+36000); if(array_key_exists("selected_image_id",$_COOKIE)) setcookie("selected_image_id",$_COOKIE["selected_image_id"],time()+36000); if(array_key_exists("test_image_ids",$_COOKIE)) setcookie("test_image_ids",$_COOKIE["test_image_ids"],time()+36000); if(array_key_exists("upload_image_ids",$_COOKIE)) setcookie("upload_image_ids",$_COOKIE["upload_image_ids"],time()+36000); return$user; } } self::clearCookie(); returnnull; } publicstaticfunctionsetUserInfo($userInfo){ $_SESSION["USER_INFO"]=$userInfo; setcookie("docloud_sid",session_id(),time()+36000); setcookie("user_id",$userInfo->getId(),time()+36000); } publicstaticfunctionisLogin(){ if(self::getUserInfo()){ returntrue; } returnfalse; } publicstaticfunctiondelUserInfo(){ self::clearCookie(); session_destroy(); } privatestaticfunctionclearCookie(){ setcookie("docloud_sid","",time()-36000); setcookie("user_id","",time()-36000); setcookie("selected_prj_id","",time()-36000); setcookie("selected_class_id","",time()-36000); setcookie("selected_image_id","",time()-36000); setcookie("test_image_ids","",time()-36000); setcookie("upload_image_ids","",time()-36000); } }
/** *ValidatorforLogin. */ finalclassLoginValidator{ privatefunction__construct(){ } /** *Validatethegivenusernameandpassword. *@param$usernameand$passwordtobevalidated *@returnarrayarrayof{@linkError}s */ publicstaticfunctionvalidate($username,$password){ $errors=array(); $username=trim($username); if(!$username){ $errors[]=newError('username','用户名不能为空。'); }elseif(strlen($username)<3){ $errors[]=newError('username','用户名长度不能小于3个字符。'); }elseif(strlen($username)>30){ $errors[]=newError('username','用户名长度不能超过30个字符。'); }elseif(!preg_match('/^[A-Za-z]+$/',substr($username,0,1))){ $errors[]=newError('username','用户名必须以字母开头。'); }elseif(!preg_match('/^[A-Za-z0-9_]+$/',$username)){ $errors[]=newError('username','用户名只能是字母、数字以及下划线(_)的组合。'); }elseif(!trim($password)){ $errors[]=newError('password','密码不能为空。'); }else{ //checkwhetheruseexistsornot $dao=newUserDao(); $user=$dao->findByName($username); if($user){ if(!($user->getPassword()==sha1($user->getSalt().$password))){ $errors[]=newError('password','用户名或密码错误。'); } }else{ $errors[]=newError('username','用户名不存在。'); } } return$errors; } }
/**
*Validationerror.
*/
finalclassError{private$source;
private$message;/**
*Createnewerror.
*@parammixed$sourcesourceoftheerror
*@paramstring$messageerrormessage
*/
function__construct($source,$message){
$this->source=$source;
$this->message=$message;
}/**
*Getsourceoftheerror.
*@returnmixedsourceoftheerror
*/
publicfunctiongetSource(){
return$this->source;
}/**
*Geterrormessage.
*@returnstringerrormessage
*/
publicfunctiongetMessage(){
return$this->message;
}}//ifloggedin,logout页面的跳转类在/article/5807952.html里这里不再重复书写
if(UserLogin::isLogin()&&$_COOKIE["user_id"]==1){
UserLogin::delUserInfo();
}elseif(UserLogin::isLogin()){
Utils::redirect('welcome');
}$username=null;
$password=null;
$msg="";if(isset($_POST['username'])&&isset($_POST['password'])){
$username=addslashes(trim(stripslashes($_POST['username'])));
$password=addslashes(trim(stripslashes($_POST['password'])));
//validate
$errors=LoginValidator::validate($username,$password);if(empty($errors)){
//save
$dao=newUserDao();
$user=$dao->findByName($username);
$last_login_ip=Utils::getIpAddress();
$user->setLastLoginIp($last_login_ip);
$now=newDateTime();
$user->setLastLoginTime($now);
$dao->save($user);
UserLogin::setUserInfo($user);
Flash::addFlash('登录成功!');
Utils::redirect('welcome');
}foreach($errorsas$e){
$msg.=$e->getMessage()."<br>";
}
}
?>本文摘取于网上精髓,大家可以学习及改进
相关文章推荐
- QuickCSharp框架开发(18)------加密用户名和密码数据与数据库读出的密码进行哈希比较(验证用户是否成功登录)
- PHP验证登录用户名和密码
- php登录验证(包括用户名、密码、验证码、数据库、是否已登陆验证、自动登录和注销登录)
- PHP验证登录用户名和密码
- easyUI(四) -- SpringMVC+MyBatis怎么验证用户名和密码进行登录
- PHP验证登录用户名和密码
- PHP验证登录用户名和密码
- PHP验证登录用户名和密码
- Qt5.9Creator登录界面函数总结(通过连接远程服务器数据库MySql5.7.17进行登录用户名和密码验证)
- PHP验证登录用户名和密码
- PHP验证登录用户名和密码
- 利用SQLite数据库进行用户名、密码的注册和登录验证
- php 登录时用户名与密码验证器
- PHP验证登录用户名和密码
- PHP验证mysql登录用户名和密码
- php 登录时用户名与密码验证器
- PHP验证登录用户名和密码
- VC SQL 登录对话框数据库对用户名和密码进行验证代码!
- 1 完成登录页面(到记事本文件进行密码和用户名的验证)。 2 完成 用户注册页面(将注册信息显示在本页面 div 中)。
- Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作