随心的博客

好记性不如个烂笔头,随心记录!

返回顶部

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     }

 

注意:
生成不同配置的验证码多个,最终验证只有最新的生成的验证码是有效的。
并不是生成多种不同配置的验证码,就有多重验证方式。

 

 
posted @ 2021-10-28 14:01  yangphp  阅读(1819)  评论(0编辑  收藏  举报