首頁 php框架 ThinkPHP 如何使用ThinkPHP6實作驗證碼功能

如何使用ThinkPHP6實作驗證碼功能

Jun 21, 2023 pm 05:48 PM
thinkphp 驗證碼 實現

在網站或應用程式的登入、註冊、找回密碼等登入認證系統當中,驗證碼功能已成為常見的一種使用者驗證方式。驗證碼功能能夠有效防止惡意攻擊和機器人攻擊,保護使用者資料和系統安全。本文將介紹如何使用ThinkPHP6框架實作驗證碼功能。

一、ThinkPHP6驗證碼功能介紹

ThinkPHP6框架中的驗證碼功能可以透過使用thinkcaptchaCaptcha類別來實現。這類提供了許多選項,可以設定驗證碼的長度、字型、字號、幹擾線類型、幹擾點類型等等。這些選項可以讓我們客製化自己的驗證碼,滿足具體業務場景的需求。

二、實作步驟

  1. 安裝ThinkPHP6框架

在本機環境中配置好PHP環境後,可以使用composer安裝ThinkPHP6框架。在命令列中輸入以下命令:

composer create-project topthink/think myproject
登入後複製

這會建立一個名為myproject的專案目錄,並自動安裝和初始化專案所需的所有依賴項。

  1. 建立驗證碼方法

在ThinkPHP6框架中,我們可以在控制器中定義驗證碼方法。例如,我們可以在Index控制器中建立一個verify方法。這個方法可以接受一個參數,用於指定驗證碼的長度,程式碼如下:

namespace appindexcontroller;

use thinkcaptchaCaptcha;

class Index
{
    public function verify($length = 4)
    {
        $captcha = new Captcha([
            'length'    =>  $length,
            'useNoise'  =>  true,
            'fontSize'  =>  30,
            'useCurve'  =>  false,
        ]);
        return $captcha->entry();
    }
}
登入後複製

在上面的程式碼中,我們使用了Captcha類別來產生驗證碼。我們傳遞了一些參數來指定驗證碼的長度、是否使用乾擾線或乾擾點等設定。

  1. 顯示驗證碼

在上面的控制器程式碼中,我們使用$captcha->entry()方法來顯示驗證碼。這個方法將會產生一張圖片,並在瀏覽器上直接輸出圖片。

我們可以在範本或檢視檔案中建立一個img元素,將它的src屬性設定為我們在步驟2中建立的驗證碼方法的URL,即可在前端頁面上顯示驗證碼了。程式碼如下:

<img src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" />
登入後複製

在上面的程式碼中,我們使用url函數產生驗證碼圖片的URL,並將長度設定為4,在點擊圖片時重新載入驗證碼圖片,以更新驗證碼。

  1. 校驗驗證碼

我們可以在提交表單資料時,使用PHP的session機制來取得使用者輸入的驗證碼,然後與產生的驗證碼進行比較來校驗驗證碼是否正確。程式碼如下:

namespace appindexcontroller;

use thinkcaptchaCaptcha;

class Index
{
    public function verify($length = 4)
    {
        $captcha = new Captcha([
            'length'    =>  $length,
            'useNoise'  =>  true,
            'fontSize'  =>  30,
            'useCurve'  =>  false,
        ]);
        return $captcha->entry();
    }
    
    public function check()
    {
        $code = input('post.captcha');
        if(captcha_check($code)){
            // 验证码正确
        }else{
            // 验证码错误
        }
    }
}
登入後複製

在上面的程式碼中,我們定義了一個check方法,用於校驗使用者輸入的驗證碼。我們使用captcha_check()函數來比較使用者輸入的驗證碼和產生的驗證碼是否相等。

  1. 驗證碼刷新功能

有時我們需要在使用者輸入驗證碼錯誤的情況下,提供刷新驗證碼的功能,以便使用者更快地通過驗證。我們可以透過簡單地刷新頁面,或透過修改驗證碼圖片的URL來實現這項功能。

在前端頁面上,在驗證碼圖片的元素中加入一個刷新按鈕,點擊該按鈕可以重新載入驗證碼圖片,以更新驗證碼。程式碼如下:

<img id="captcha" src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" />
<button onclick="document.getElementById('captcha').src='{:url('index/verify', ['length'=>4])}?' + Math.random(); return false;">刷新验证码</button>
登入後複製

在上面的程式碼中,我們使用JavaScript程式碼修改驗證碼圖片的src屬性,並將其中的Math.random()函數作為參數傳遞給url函數。這樣每次刷新都會產生一個新的URL,以重新載入驗證碼。

  1. 完整範例程式碼

上面的程式碼片段可能不夠完整,以下是使用ThinkPHP6實作驗證碼功能的完整程式碼。

namespace appindexcontroller;

use thinkcaptchaCaptcha;

class Index
{
    // 验证码函数
    public function verify($length = 4)
    {
        $captcha = new Captcha([
            'length'    =>  $length,
            'useNoise'  =>  true,
            'fontSize'  =>  30,
            'useCurve'  =>  false,
        ]);
        return $captcha->entry();
    }
    
    // 验证码校验函数
    public function check()
    {
        $code = input('post.captcha');
        if(captcha_check($code)){
            // 验证码正确
        }else{
            // 验证码错误
        }
    }
}
登入後複製
<!-- 登录表单页面 -->
<form method="post" action="{:url('index/check')}">
    <div>
        <label>用户名</label>
        <input type="text" name="username" />
    </div>
    <div>
        <label>密码</label>
        <input type="password" name="password" />
    </div>
    <div>
        <label>验证码</label>
        <img id="captcha" src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" /><br/>
        <input type="text" name="captcha" />
        <a href="#" onclick="document.getElementById('captcha').src='{:url('index/verify', ['length'=>4])}?' + Math.random(); return false;">刷新验证码</a>
    </div>
    <button type="submit">登录</button>
</form>
登入後複製

以上就是使用ThinkPHP6實作驗證碼功能的全流程。如果你正在開發網頁應用程式或網站,那麼使用驗證碼功能可以提高系統的安全性,並且保護使用者資料免受惡意攻擊。

以上是如何使用ThinkPHP6實作驗證碼功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Google瀏覽器不顯示驗證碼圖片怎麼辦?chrome瀏覽器不顯示驗證碼? Google瀏覽器不顯示驗證碼圖片怎麼辦?chrome瀏覽器不顯示驗證碼? Mar 13, 2024 pm 08:55 PM

谷歌瀏覽器不顯示驗證碼圖片怎麼辦?在使用Google瀏覽器登入網頁有時候需要驗證碼驗證。部分使用者在使用圖片驗證碼的時候發現Google瀏覽器無法正常顯示圖片的內容。這該怎麼辦呢?下面小編帶來Google瀏覽器驗證碼不顯示處理方法介紹,希望對大家有幫助!  方法介紹  1、進入軟體,點選右上角的「更多」按鈕,選擇下方選項清單中的「設定」進入。  2、進入新介面後,點選左側的「隱私設定與安全性」選項。  3、接著點擊右側中的「網站設定&rdquo

thinkphp專案怎麼運行 thinkphp專案怎麼運行 Apr 09, 2024 pm 05:33 PM

執行 ThinkPHP 專案需要:安裝 Composer;使用 Composer 建立專案;進入專案目錄,執行 php bin/console serve;造訪 http://localhost:8000 查看歡迎頁面。

thinkphp有幾個版本 thinkphp有幾個版本 Apr 09, 2024 pm 06:09 PM

ThinkPHP 擁有多個版本,針對不同 PHP 版本而設計。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用於修復 bug 和提供新功能。目前最新穩定版本為 ThinkPHP 6.0.16。在選擇版本時,需考慮 PHP 版本、功能需求和社群支援。建議使用最新穩定版本以獲得最佳性能和支援。

華為手機如何實現雙微信登入? 華為手機如何實現雙微信登入? Mar 24, 2024 am 11:27 AM

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

thinkphp怎麼運行 thinkphp怎麼運行 Apr 09, 2024 pm 05:39 PM

ThinkPHP Framework 的本機運作步驟:下載並解壓縮 ThinkPHP Framework 到本機目錄。建立虛擬主機(可選),指向 ThinkPHP 根目錄。配置資料庫連線參數。啟動 Web 伺服器。初始化 ThinkPHP 應用程式。存取 ThinkPHP 應用程式 URL 運行。

PHP程式設計指南:實作斐波那契數列的方法 PHP程式設計指南:實作斐波那契數列的方法 Mar 20, 2024 pm 04:54 PM

程式語言PHP是一種用於Web開發的強大工具,能夠支援多種不同的程式設計邏輯和演算法。其中,實作斐波那契數列是一個常見且經典的程式設計問題。在這篇文章中,將介紹如何使用PHP程式語言來實作斐波那契數列的方法,並附上具體的程式碼範例。斐波那契數列是一個數學上的序列,其定義如下:數列的第一個和第二個元素為1,從第三個元素開始,每個元素的值等於前兩個元素的和。數列的前幾元

laravel和thinkphp哪個好 laravel和thinkphp哪個好 Apr 09, 2024 pm 03:18 PM

Laravel 和 ThinkPHP 框架的效能比較:ThinkPHP 效能通常優於 Laravel,專注於最佳化和快取。 Laravel 性能良好,但對於複雜應用程序,ThinkPHP 可能更適合。

如何在華為手機上實現微信分身功能 如何在華為手機上實現微信分身功能 Mar 24, 2024 pm 06:03 PM

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App

See all articles