首頁 後端開發 php教程 ThinkPHP3.2.3驗證碼的顯示與刷新以及校驗

ThinkPHP3.2.3驗證碼的顯示與刷新以及校驗

Jun 08, 2018 am 10:40 AM
thinkphp thinkphp3.2 驗證碼

本篇文章主要介紹了ThinkPHP3.2.3驗證碼顯示、刷新、校驗 ,具有一定的參考價值,有興趣的小伙伴們可以參考一下。

ThinkPHP3.2.3驗證碼顯示、重新整理、校驗,如下:

顯示驗證碼

首先在Home/Controller下建立一個公用控制器PublicController

<?php
namespace Home\Controller;

use Think\Controller;
use Think\Verify;

class PublicController extends Controller
{

  /* 生成验证码 */
  public function verify()
  {
    $config = [
      &#39;fontSize&#39; => 19, // 验证码字体大小
      &#39;length&#39; => 4, // 验证码位数
      &#39;imageH&#39; => 34
    ];
    $Verify = new Verify($config);
    $Verify->entry();
  }

  /* 验证码校验 */
  public function check_verify($code, $id = &#39;&#39;)
  {
    $verify = new \Think\Verify();
    $res = $verify->check($code, $id);
    $this->ajaxReturn($res, &#39;json&#39;);
  }
}
登入後複製

#verify函數用來產生驗證碼,config是用來設定顯示驗證碼的屬性。此屬性有哪些可設定項,可以查看Thinkphp/Library/Think/Verify.class.php文件,此處不再贅述。

check_verify函數用於校驗驗證碼的正確性。模板post使用者填寫的驗證碼到函數,回傳$res==true驗證通過false驗證失敗。
前台範本頁建立index.html

 <p class="">
 <label for="j_verify" class="t">验证码:</label> <input id="j_verify"
 name="j_verify" type="text" class="form-control x in">
 <img id="verify_img" alt="点击更换" title="点击更换"
 src="{:U(&#39;public/verify&#39;,array())}" class="m">
 </p>
登入後複製

#使用Thinkphp的U方法形成產生驗證碼的圖片。

點擊刷新驗證碼

從上面產生驗證碼的連結我們可以看出,網域名稱/public/verify即可產生驗證碼。 Thinkphp的驗證碼產生機制是,若我們需要產生新的驗證碼,在該連結後加入變數值即可。

我們可以考慮實作public/verify/變數值的形式URL。

$("#verify_img").click(function() {
  var verifyURL = "public/verify";
  var time = new Date().getTime();
  $("#verify_img").attr({
   "src" : verifyURL + "/" + time
  });
});
登入後複製

使用JS取得目前時間戳記加入到URL之後即可。

到此我們即可實現驗證碼的點擊刷新功能。具體表現形式,自己隨意哈。

非同步校驗驗證碼

大家一定看過在某些網站,我們輸入驗證碼的時候,輸入的過程中文本框後面一直顯示錯誤,直到我們輸入爭取的時候會先提示驗證碼正確的形式。下面程式碼就可以實作:

$("#j_verify").keyup(function() {
  $.post("public/check_verify", {
    code : $("#j_verify").val()
    }, function(data) {
    if (data == true) {
      //验证码输入正确
    } else {
      //验证码输入错误
    }
  });
});
登入後複製

利用onekeyup。原理就不需要多講了吧!

這樣我們就可以實現在提交使用者名稱密碼之前先進行一次驗證碼校驗,之後表單提交之後再進行一次校驗,提升使用者體驗啦!

還沒結束:

當我們採取以上形式實作驗證碼兩次校驗的時候,一定會出現第一次非同步校驗成功,但是提交表單卻提示驗證碼錯誤的情況!其實原因還是出在Thinkphp的Verify.class.php上:

以下是該類別初始的config配置:

protected $config =  array(
    &#39;seKey&#39;   => &#39;ThinkPHP.CN&#39;,  // 验证码加密密钥
    &#39;codeSet&#39;  => &#39;2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY&#39;,       // 验证码字符集合
    &#39;expire&#39;  => 1800,      // 验证码过期时间(s)
    &#39;useZh&#39;   => false,      // 使用中文验证码 
    &#39;zhSet&#39;   => &#39;……此处不粘贴了,太多了!&#39;,       // 中文验证码字符串
    &#39;useImgBg&#39; => false,      // 使用背景图片 
    &#39;fontSize&#39; => 25,       // 验证码字体大小(px)
    &#39;useCurve&#39; => false,      // 是否画混淆曲线
    &#39;useNoise&#39; => false,      // 是否添加杂点  
    &#39;imageH&#39;  => 0,        // 验证码图片高度
    &#39;imageW&#39;  => 0,        // 验证码图片宽度
    &#39;length&#39;  => 5,        // 验证码位数
    &#39;fontttf&#39;  => &#39;&#39;,       // 验证码字体,不设置随机获取
    &#39;bg&#39;    => array(243, 251, 254), // 背景颜色
    &#39;reset&#39;   => true,      // 验证成功后是否重置
    );
登入後複製

請大家注意最後一個屬性reset 表示的是驗證成功後是否重置驗證碼。相信大家都明白了吧,我們進行第一次校驗通過之後,其實該驗證碼已經失效了,只不過因為我們採取的是異步校驗,頁面並沒有刷新,導致了第二次申請校驗的時候和系統產生的已經是不相同的了。所以如果大家喜歡這種兩次校驗的風格,可以考慮將reset配置為false即可。

好了,基於Thinkphp3.2.3的驗證碼問題今天就總結到這裡了。只是大概說了一下實現方法,具體內容還請大家參考TP官方手冊。如有錯誤之處,歡迎大家指出。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

thinkPHP5.0框架設定格式、載入解析與讀取的方法

thinkPHP中驗證程式碼的簡單實作方法

#

以上是ThinkPHP3.2.3驗證碼的顯示與刷新以及校驗的詳細內容。更多資訊請關注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 版本、功能需求和社群支援。建議使用最新穩定版本以獲得最佳性能和支援。

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

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

虛擬號碼可以接收驗證碼嗎 虛擬號碼可以接收驗證碼嗎 Jan 02, 2024 am 10:22 AM

虛擬號碼可以接收驗證碼,只要註冊時填寫的手機號碼符合規定,並且能夠正常接通手機號,就可以收到簡訊驗證碼。不過,使用虛擬手機號碼要注意,部分網站不支援虛擬手機號碼註冊,因此需要選擇正規的虛擬手機號碼服務商。

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

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

開發建議:如何利用ThinkPHP框架實現非同步任務 開發建議:如何利用ThinkPHP框架實現非同步任務 Nov 22, 2023 pm 12:01 PM

《開發建議:如何利用ThinkPHP框架實現非同步任務》隨著網路技術的快速發展,Web應用程式對於處理大量並發請求和複雜業務邏輯的需求也越來越高。為了提高系統的效能和使用者體驗,開發人員常常會考慮利用非同步任務來執行一些耗時操作,例如發送郵件、處理文件上傳、產生報表等。在PHP領域,ThinkPHP框架作為一個流行的開發框架,提供了一些便捷的方式來實現非同步任務。

thinkphp怎麼安裝 thinkphp怎麼安裝 Apr 09, 2024 pm 05:42 PM

ThinkPHP 安裝步驟:準備 PHP、Composer、MySQL 環境。使用 Composer 建立專案。安裝 ThinkPHP 框架及相依性。配置資料庫連線。產生應用程式碼。啟動應用程式並造訪 http://localhost:8000。

See all articles