TP6驗證碼的多種使用方式


 
本篇內容會全方面通過實例的方式講一下TP6里面驗證碼的各種使用方法
 

一、安裝驗證碼擴展包

composer require topthink/think-captcha

二、開啟Session

找到app/middleware.php 文件,找到下面一行,並取消前面的注釋
\think\middleware\SessionInit::class

三、因為要用到模板,需要安裝下模板擴展

composer require topthink/think-view

四、TP6內置驗證碼生成以及驗證

html代碼:

<h3>內置驗證碼生成以及驗證:</h3>
<div>{:captcha_img()}</div>

<form action="/index.php/test_session/verify01" method="post">
  <p>請輸入驗證碼: <input type="text" name="yzm" /> </p>
  <p><input type="submit" value="提交"></p>
</form>
html效果:

控制器代碼:
 1 /**
 2      * TP6內置驗證碼生成以及驗證
 3      */
 4     public function show01()
 5     {
 6         return view("test/show01");
 7     }
 8     /**
 9      * TP6內置驗證碼生成以及驗證
10      */
11     public function verify01()
12     {
13         $data = request()->param();
14 
15         if (empty($data['yzm'])) 
16         {
17             return json(array('status'=>'FAIL','msg'=>'請輸入驗證碼!'));
18         }
19         //調用內置的函數手動驗證
20         if(!captcha_check($data['yzm'])){
21             return json(array('status'=>'FAIL','msg'=>'驗證失敗!'));
22         }else{
23             return json(array('status'=>'FAIL','msg'=>'驗證成功!'));
24         }
25     }

 

五、自定義驗證碼 生成以及驗證

HTML代碼:
<h3>自定義驗證碼生成以及驗證:</h3>
<div><img src="/index.php/test_session/createYzm"  onclick="this.src='/index.php/test_session/createYzm?r='+Math.random()"></div>

<form action="/index.php/test_session/verify02" method="post">
  <p>請輸入驗證碼: <input type="text" name="yzm" /> </p>
  <p><input type="submit" value="提交"></p>
</form>
控制器代碼:
控制器文件頂部引入 Captcha 類
use think\captcha\facade\Captcha;

 1 /**
 2      * 創建驗證碼
 3      */
 4     public function createYzm()
 5     {
 6          return Captcha::create();
 7     }
 8     /**
 9      * 自定義驗證碼 生成以及驗證 模板
10      */
11     public function show02()
12     {
13         return view("test/show02");
14     }
15 
16     /**
17      * 自定義驗證碼 生成以及驗證
18      */
19     public function verify02()
20     {
21         $data = request()->param();
22 
23         if (empty($data['yzm'])) 
24         {
25             return json(array('status'=>'FAIL','msg'=>'請輸入驗證碼!'));
26         }
27         //調用內置的函數手動驗證
28         if(!captcha_check($data['yzm'])){
29             return json(array('status'=>'FAIL','msg'=>'驗證失敗!'));
30         }else{
31             return json(array('status'=>'FAIL','msg'=>'驗證成功!'));
32         }
33     }

對比說明:

使用自定義的更加靈活一些,可以搭配各種樣式,
使用內置的是方便一點點。
我是推薦使用自定義的驗證碼,這樣代碼的來龍去脈比較清晰,有問題也方便排錯。

六、驗證碼常用的配置

配置文件:config/captcha.php
常用到的配置有以下幾個:

 1 //驗證碼位數
 2 'length'   => 5,
 3 // 驗證碼字符集合
 4 'codeSet'  => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
 5 // 是否使用混淆曲線
 6 'useCurve' => true,
 7 //是否添加雜點
 8 'useNoise' => true,
 9 //背景顏色
10 'bg'       => [243, 251, 254],
注意:
驗證碼的高度 和寬度不要修改,設置為0即可,不然設置的小了,會出現驗證碼顯示不全的問題。
如果需要調整大小,通過頁面的css樣式進行調整驗證碼的 width 和 height 屬性
 

七、生成多個不同配置的驗證碼

設置配置文件config/captcha.php:

生成不同配置的驗證碼
 1 /**
 2      * 創建新驗證碼
 3      */
 4     public function createNewYzm()
 5     {
 6         //生成 verify配置的驗證碼
 7          return Captcha::create('verify');
 8         //生成 my_verify的驗證碼
 9         // return Captcha::create('my_verify');
10     }

 

注意:
生成不同配置的驗證碼多個,最終驗證只有最新的生成的驗證碼是有效的。
並不是生成多種不同配置的驗證碼,就有多重驗證方式。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM