如何使用ThinkPHP6實(shí)作驗(yàn)證碼功能
Jun 21, 2023 pm 05:48 PM在網(wǎng)站或應(yīng)用程式的登入、註冊(cè)、找回密碼等登入認(rèn)證系統(tǒng)當(dāng)中,驗(yàn)證碼功能已成為常見(jiàn)的一種使用者驗(yàn)證方式。驗(yàn)證碼功能能夠有效防止惡意攻擊和機(jī)器人攻擊,保護(hù)使用者資料和系統(tǒng)安全。本文將介紹如何使用ThinkPHP6框架實(shí)作驗(yàn)證碼功能。
一、ThinkPHP6驗(yàn)證碼功能介紹
ThinkPHP6框架中的驗(yàn)證碼功能可以透過(guò)使用thinkcaptchaCaptcha類別來(lái)實(shí)現(xiàn)。這類提供了許多選項(xiàng),可以設(shè)定驗(yàn)證碼的長(zhǎng)度、字型、字號(hào)、幹?jǐn)_線類型、幹?jǐn)_點(diǎn)類型等等。這些選項(xiàng)可以讓我們客製化自己的驗(yàn)證碼,滿足具體業(yè)務(wù)場(chǎng)景的需求。
二、實(shí)作步驟
- 安裝ThinkPHP6框架
在本機(jī)環(huán)境中配置好PHP環(huán)境後,可以使用composer安裝ThinkPHP6框架。在命令列中輸入以下命令:
composer create-project topthink/think myproject
這會(huì)建立一個(gè)名為myproject的專案目錄,並自動(dòng)安裝和初始化專案所需的所有依賴項(xiàng)。
- 建立驗(yàn)證碼方法
在ThinkPHP6框架中,我們可以在控制器中定義驗(yàn)證碼方法。例如,我們可以在Index控制器中建立一個(gè)verify方法。這個(gè)方法可以接受一個(gè)參數(shù),用於指定驗(yàn)證碼的長(zhǎng)度,程式碼如下:
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類別來(lái)產(chǎn)生驗(yàn)證碼。我們傳遞了一些參數(shù)來(lái)指定驗(yàn)證碼的長(zhǎng)度、是否使用乾擾線或乾擾點(diǎn)等設(shè)定。
- 顯示驗(yàn)證碼
在上面的控制器程式碼中,我們使用$captcha->entry()
方法來(lái)顯示驗(yàn)證碼。這個(gè)方法將會(huì)產(chǎn)生一張圖片,並在瀏覽器上直接輸出圖片。
我們可以在範(fàn)本或檢視檔案中建立一個(gè)img元素,將它的src屬性設(shè)定為我們?cè)诓襟E2中建立的驗(yàn)證碼方法的URL,即可在前端頁(yè)面上顯示驗(yàn)證碼了。程式碼如下:
<img src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" />
在上面的程式碼中,我們使用url函數(shù)產(chǎn)生驗(yàn)證碼圖片的URL,並將長(zhǎng)度設(shè)定為4,在點(diǎn)擊圖片時(shí)重新載入驗(yàn)證碼圖片,以更新驗(yàn)證碼。
- 校驗(yàn)驗(yàn)證碼
我們可以在提交表單資料時(shí),使用PHP的session機(jī)制來(lái)取得使用者輸入的驗(yàn)證碼,然後與產(chǎn)生的驗(yàn)證碼進(jìn)行比較來(lái)校驗(yàn)驗(yàn)證碼是否正確。程式碼如下:
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)){ // 驗(yàn)證碼正確 }else{ // 驗(yàn)證碼錯(cuò)誤 } } }
在上面的程式碼中,我們定義了一個(gè)check方法,用於校驗(yàn)使用者輸入的驗(yàn)證碼。我們使用captcha_check()
函數(shù)來(lái)比較使用者輸入的驗(yàn)證碼和產(chǎn)生的驗(yàn)證碼是否相等。
- 驗(yàn)證碼刷新功能
有時(shí)我們需要在使用者輸入驗(yàn)證碼錯(cuò)誤的情況下,提供刷新驗(yàn)證碼的功能,以便使用者更快地通過(guò)驗(yàn)證。我們可以透過(guò)簡(jiǎn)單地刷新頁(yè)面,或透過(guò)修改驗(yàn)證碼圖片的URL來(lái)實(shí)現(xiàn)這項(xiàng)功能。
在前端頁(yè)面上,在驗(yàn)證碼圖片的元素中加入一個(gè)刷新按鈕,點(diǎn)擊該按鈕可以重新載入驗(yàn)證碼圖片,以更新驗(yàn)證碼。程式碼如下:
<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;">刷新驗(yàn)證碼</button>
在上面的程式碼中,我們使用JavaScript程式碼修改驗(yàn)證碼圖片的src屬性,並將其中的Math.random()函數(shù)作為參數(shù)傳遞給url函數(shù)。這樣每次刷新都會(huì)產(chǎn)生一個(gè)新的URL,以重新載入驗(yàn)證碼。
- 完整範(fàn)例程式碼
上面的程式碼片段可能不夠完整,以下是使用ThinkPHP6實(shí)作驗(yàn)證碼功能的完整程式碼。
namespace appindexcontroller; use thinkcaptchaCaptcha; class Index { // 驗(yàn)證碼函數(shù) public function verify($length = 4) { $captcha = new Captcha([ 'length' => $length, 'useNoise' => true, 'fontSize' => 30, 'useCurve' => false, ]); return $captcha->entry(); } // 驗(yàn)證碼校驗(yàn)函數(shù) public function check() { $code = input('post.captcha'); if(captcha_check($code)){ // 驗(yàn)證碼正確 }else{ // 驗(yàn)證碼錯(cuò)誤 } } }
<!-- 登錄表單頁(yè)面 --> <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>驗(yàn)證碼</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;">刷新驗(yàn)證碼</a> </div> <button type="submit">登錄</button> </form>
以上就是使用ThinkPHP6實(shí)作驗(yàn)證碼功能的全流程。如果你正在開(kāi)發(fā)網(wǎng)頁(yè)應(yīng)用程式或網(wǎng)站,那麼使用驗(yàn)證碼功能可以提高系統(tǒng)的安全性,並且保護(hù)使用者資料免受惡意攻擊。
以上是如何使用ThinkPHP6實(shí)作驗(yàn)證碼功能的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

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

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

華為手機(jī)如何實(shí)現(xiàn)雙微信登入?隨著社群媒體的興起,微信已成為人們?nèi)粘I钪胁豢苫蛉钡臏贤üぞ咧弧H欢?,許多人可能會(huì)遇到一個(gè)問(wèn)題:在同一部手機(jī)上同時(shí)登入多個(gè)微信帳號(hào)。對(duì)於華為手機(jī)用戶來(lái)說(shuō),實(shí)現(xiàn)雙微信登入並不困難,本文將介紹華為手機(jī)如何實(shí)現(xiàn)雙微信登入的方法。首先,華為手機(jī)自帶的EMUI系統(tǒng)提供了一個(gè)很方便的功能-應(yīng)用程式雙開(kāi)。透過(guò)應(yīng)用程式雙開(kāi)功能,用戶可以在手機(jī)上同

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

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

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

程式語(yǔ)言PHP是一種用於Web開(kāi)發(fā)的強(qiáng)大工具,能夠支援多種不同的程式設(shè)計(jì)邏輯和演算法。其中,實(shí)作斐波那契數(shù)列是一個(gè)常見(jiàn)且經(jīng)典的程式設(shè)計(jì)問(wèn)題。在這篇文章中,將介紹如何使用PHP程式語(yǔ)言來(lái)實(shí)作斐波那契數(shù)列的方法,並附上具體的程式碼範(fàn)例。斐波那契數(shù)列是一個(gè)數(shù)學(xué)上的序列,其定義如下:數(shù)列的第一個(gè)和第二個(gè)元素為1,從第三個(gè)元素開(kāi)始,每個(gè)元素的值等於前兩個(gè)元素的和。數(shù)列的前幾元

ThinkPHP 安裝步驟:準(zhǔn)備 PHP、Composer、MySQL 環(huán)境。使用 Composer 建立專案。安裝 ThinkPHP 框架及相依性。配置資料庫(kù)連線。產(chǎn)生應(yīng)用程式碼。啟動(dòng)應(yīng)用程式並造訪 http://localhost:8000。
