php登錄驗證模塊,php驗證碼如何實現登錄驗證

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-02 09:41
下一篇 2024-12-02 09:41

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • 如何實現圖像粘貼到蒙版

    本文將從多個方面介紹圖像粘貼到蒙版的實現方法。 一、創建蒙版 首先,在HTML中創建一個蒙版元素,用於接收要粘貼的圖片。 <div id=”mask” style=”widt…

    編程 2025-04-29
  • 光模塊異常,SFP未認證(entityphysicalindex=6743835)——解決方案和

    如果您遇到類似optical module exception, sfp is not certified. (entityphysicalindex=6743835)的問題,那麼…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python模塊下載與安裝指南

    如果想要擴展Python的功能,可以使用Python模塊來實現。但是,在使用之前,需要先下載並安裝對應的模塊。本文將從以下多個方面對Python模塊下載與安裝進行詳細的闡述,包括使…

    編程 2025-04-29
  • Django ORM如何實現或的條件查詢

    在我們使用Django進行數據庫操作的時候,查詢條件往往不止一個,一個好的查詢語句需要考慮我們的查詢要求以及業務場景。在實際工作中,我們經常需要使用或的條件進行查詢,本文將詳細介紹…

    編程 2025-04-29
  • Python編程三劍客——模塊、包、庫

    本文主要介紹Python編程三劍客:模塊、包、庫的概念、特點、用法,以及在實際編程中的實際應用,旨在幫助讀者更好地理解和應用Python編程。 一、模塊 1、概念:Python模塊…

    編程 2025-04-29
  • Python如何下載第三方模塊

    想要使Python更加強大且具備跨平台性,我們可以下載許多第三方模塊。下面將從幾個方面詳細介紹如何下載第三方模塊。 一、使用pip下載第三方模塊 pip是Python的軟件包管理器…

    編程 2025-04-28
  • 如何使用pip安裝模塊

    pip作為Python默認的包管理系統,是安裝和管理Python包的一種方式,它可以輕鬆快捷地安裝、卸載和管理Python的擴展庫、模塊等。下面從幾個方面詳細介紹pip的使用方法。…

    編程 2025-04-28
  • Python一次性輸入10個數如何實現?

    Python提供了多種方法進行輸入,可以手動逐個輸入,也可以一次性輸入多個數。在需要輸入大量數據時,一次性輸入十個數就非常方便。下面我們從多個方面來講解如何一次性輸入10個數。 一…

    編程 2025-04-28

發表回復

登錄後才能評論