本文目錄一覽:
thinkphp 怎麼做登錄驗證
登錄無非就是驗證用戶名密碼以及驗證碼是否正確,我們可以新建一個CommonAction的公共類,用來校驗權限,其他所有類繼承此類。該類內部寫一個初始化方法,用於驗證,這一講先不詳細講解。繼續說登錄,由於登錄是公開模塊的方法,所以可以新建一個PublicAction類,用於公共的免驗證方法,同時在配置文件中添加
‘NOT_AUTH_MODULE’=’Public’,//默認不需要認證的模塊
‘USER_AUTH_GATEWAY’=’/Public/login’,//默認的認證網關
然後開始編寫Public類,具體代碼如下:
?php
classPublicActionextendsCommonAction{
//驗證碼顯示
publicfunction verify(){
import(“ORG.Util.Image”);
Image::buildImageVerify(4,1,”png”,100,28,”verify”);
}
//驗證是否賬號密碼
function checklogin(){
//此處多餘可自行改為Model自動驗證
if(empty($_POST[‘username’])){
$this-error(‘帳號錯誤!’);
}elseif (empty($_POST[‘password’])){
$this-error(‘密碼必須!’);
}elseif (empty($_POST[‘verify’])){
$this-error(‘驗證碼必須!’);
}
$map=array();
$map[‘username’]=$_POST[‘username’];
$map[‘status’]=array(‘gt’,0);
if($_SESSION[‘verify’]!= md5($_POST[‘verify’])){
$this-error(‘驗證碼錯誤!’);
}
import(‘ORG.Util.RBAC’);
//C(‘USER_AUTH_MODEL’,’User’);
//驗證賬號密碼
$authInfo=RBAC::authenticate($map);
if(empty($authInfo)){
$this-error(‘賬號不存在或者被禁用!’);
}else{
if($authInfo[‘password’]!=md5($_POST[‘password’])){
$this-error(‘賬號密碼錯誤!’);
}else{
$_SESSION[C(‘USER_AUTH_KEY’)]=$authInfo[‘id’];//記錄認證標記,必須有。其他信息根據情況取用。
$_SESSION[’email’]=$authInfo[’email’];
$_SESSION[‘nickname’]=$authInfo[‘nickname’];
$_SESSION[‘user’]=$authInfo[‘username’];
$_SESSION[‘last_login_date’]=$authInfo[‘last_login_date’];
$_SESSION[‘last_login_ip’]=$authInfo[‘last_login_ip’];
//判斷是否為超級管理員
if($authInfo[‘username’]==’admin’){
$_SESSION[C(‘ADMIN_AUTH_KEY’)]=true;
}
//以下操作為記錄本次登錄信息
$user=M(‘User’);
$lastdate=date(‘Y-m-d H:i:s’);
$data=array();
$data[‘id’]=$authInfo[‘id’];
$data[‘last_login_date’]=$lastdate;
$data[‘last_login_ip’]=$_SERVER[“REMOTE_ADDR”];
$user-save($data);
RBAC::saveAccessList();//用於檢測用戶權限的方法,並保存到Session中
$this-assign(‘jumpUrl’,.’/Index/index’);
$this-success(‘登錄成功!’);
}
}
}
//退出登錄操作
function logout(){
if(!empty($_SESSION[C(‘USER_AUTH_KEY’)])){
unset($_SESSION[C(‘USER_AUTH_KEY’)]);
$_SESSION=array();
session_destroy();
$this-assign(‘jumpUrl’,/Code.’/login’);
$this-success(‘登出成功’);
}else{
$this-error(‘已經登出了’);
}
}
}
以上代碼僅實現功能,沒有做優化,有些驗證的操作可以放到model,session也不用一 一賦值,用數組即可,我想已經入門的應該可以自己改的更好。
Thinkphp3.2模塊驗證登錄問題?
可以的 每個模塊可以使用不同的入口,需要在配置文件里修改,然後添加入口文件,在官方的文檔里有的。如果不想多入口的話 就在Admin模塊里添加一個RootAction.class.php 其他的Action都extends這個Action,然後就可以在Root里進行判斷了
thinkphp中不需要用戶進行登陸驗證的和需要用戶登陸驗證的的頁面,怎樣寫一下公用的來模塊來處理他們?
寫一個公共的模塊 需要登錄驗證,讓所有需要登錄的模塊繼承這個模塊,不需要登錄的模塊不繼承這個模塊就好了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/193801.html