博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于tp5 验证码
阅读量:6898 次
发布时间:2019-06-27

本文共 2145 字,大约阅读时间需要 7 分钟。

前言:

验证码是我们互联网生活中非常常见的一个事物,我们开发人员也经常会写,没有验证码的系统是不安全的.我们平时使用ThinkPHP框架来开发,框架为我们准备了验证码的组件,今天我们来看看如何使用tp5的验证码

目录:

  1. 验证码的呈现
  2. 验证码的刷新
  3. 验证码的验证

1.验证码的呈现

首先我们tp5框架并没有直接封装验证码,我们需要composer来引入这个扩展组件.

//命令为composer require topthink/think-captcha

引入之后,我们的扩展目录中就会出现我们安装的验证码扩展目录

image.png

在使用验证码之前,我们可以通过手册发现验证码有哪些配置

image.png

这些配置有几种配置方式

  1. 创建验证码对象时,将配置数组传入
$config =    [    // 验证码字体大小    'fontSize'    =>    30,        // 验证码位数    'length'      =>    3,       // 关闭验证码杂点    'useNoise'    =>    false, ];$captcha = new Captcha($config);
  1. 在config.php中,直接以captcha命名的配置中直接配置
image.png

因为一个站点通常使用一种验证码,所有推荐大家使用第二种方式

配置好了,我们就可以来使用它了,首先我们需要写一个html页面

简单写个登陆页面,这我就多说了
我们直接说验证码的显示

  1. 写一个img标签,在src中赋值
< img src="{:captcha_src()}" id="captcha" alt="看不清楚点击换图">
  1. 直接使用封装好的captcha_img()方法来显示图片
{:captcha_img()}

这两种方式都可以输出一张验证码,但我们考虑到要刷新验证码,我们选择操作空间更大的第一种方式

然后控制器渲染视图,我就不详细讲了.
我们就可以得到一个有验证码的页面

image.png

2. 验证码刷新

生活中我们肯定会遇到验证码模糊看不清楚的时候,这时站点一般都会提供一个点击刷新的按钮来刷新验证码.

我们首先找到验证码的img 的src

image.png

找到这个url之后,我们就可以想办法让它刷新了,根据以往的经验,在验证码的src后面加上一个随机数就可以让验证码刷新

那么下面我们就来写JavaScrip代码

//我们在一个按钮中设置了点击事件    $(function () {            $("#refresh").click(function () {//我们选择通过时间撮来当作我们的随机数                var time=Date.parse(new Date());//将时间戳加入到url地址的路由中                $("#captcha").attr('src','/captcha.html?id='+time);            })    })

这样我们每次点击按钮就会生成新的验证码了

image.png

3. 验证码的验证

既然有了验证码,我们就得验证它。我们对验证码验证主要是有两个验证,一个就是是否输入验证码,一个是验证码输入是否正确。

tp5中的验证码和其他的验证一样,有多种验证方式,本次介绍的是开发团队比较推荐的验证器类来实现。

首先,我们需要一个验证器类

image.png
image.png

好了我们写好了验证类后,就应该调用验证了

首先我们需要实例化验证器规则

//实例化验证器对象        $validate=Loader::validate('验证器类名');

现在我们就获取到了验证器对象,我们只需要调用对象中的验证方法check()就可以验证了

/**     * 数据自动验证     * @access public     * @param array     $data  数据     * @param mixed     $rules  验证规则     * @param string    $scene 验证场景     * @return bool     */    public function check($data, $rules = [], $scene = '')

当我们不传入验证规则时,他会读取对象上的rule属性,也就是我们之前写好的验证规则。如果验证失败的话,check()方法返回false

这时候,我们只需要调用验证器对象上的getError()方法就可以得到提示信息了

//实例化验证器对象        $validate=Loader::validate('User');        if (!$validate->check($data)) {            dump($validate->getError());exit;        }

好了,本次tp5验证码的介绍了就写到这里了,如果有什么地方不对,希望大神指正.谢谢

以上

转载地址:http://pscdl.baihongyu.com/

你可能感兴趣的文章
Executor执行框架
查看>>
[FMX] Android APP 启动黑屏优化补丁
查看>>
常用JavaScript的高级技巧
查看>>
bzoj 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘
查看>>
mac编辑器vim美化
查看>>
MD5摘要算法简析
查看>>
《30天自制操作系统》学习笔记一
查看>>
Python.tornado.2.tornado.options
查看>>
mysql关于or的索引问题
查看>>
装在u盘的linux
查看>>
ASP.NET几种页面数据绑定的用法及区别: <%#、 <%=、 <% 、<%@
查看>>
zookeeper
查看>>
ABP源码分析二十四:Notification
查看>>
Photo4
查看>>
(八)mybatis之多对多
查看>>
h5空白页面过渡加载
查看>>
端午悲剧—我的上海情结(二)
查看>>
Ajax实现登陆并友好提示错误信息
查看>>
第1周小组博客作业——1702班1组
查看>>
思考线上如何既保证不影响查询,又能做更新操作
查看>>