ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】


Posted in PHP onMarch 11, 2019

本文实例讲述了ThinkPHP5.0框架验证码功能实现方法。分享给大家供大家参考,具体如下:

背景

ThinkPHP5.0 已经出现很久了,最近有所接触,下面介绍一下常用的第三方验证码功能的使用。

ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】

♜ 功能开发

1).引入第三方扩展包

进行 TP5 的开发,Composer 的使用会成为重要技能,以 windows 为例子,输入命令:

composer require topthink/think-captcha

完成上述操作,会在以下目录中出现 captcha 的扩展包

..\vendor\topthink\think-captcha

2).前端设置

在前端页面需要显示验证码的位置,补充 {:captcha_img()} 即可,个人代码举例如下:

<p class="pass-form-item">
    <label class="pass-label">验证码</label>
    <input type="text" name="verifyCode" class="pass-text-input " placeholder="请输入验证码">
   <div>{:captcha_img()}</div>
</p>

ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】

3). captcha 扩展包代码优化

如果按照上述操作,显示的验证码图片并不能点击刷新,可自己根据需求进行刷新功能设计;或者,建议进行下面的代码优化:

function captcha_img($id = "")
{
  $js_src = "this.src='".captcha_src()."'";
  return '<img src="' . captcha_src($id) . '" title="点击更新验证码" alt="点击更新验证码" onclick="'.$js_src.'" />';
  //return '![](' . captcha_src($id) . ')';
}

打开 ..\vendor\topthink\think-captcha\src\helper.php 文件,替换上面的 captcha_img() 方法代码.

此时的验证码图片即可实现点击 实时刷新 功能.

4). 后台代码验证

根据前端请求而来的 verifyCode 数据,调用 helper.php 中的 captcha_check() 方法,进行验证。

if(request()->isPost()){
      $data = input('post.');
      if(!captcha_check($data['verifyCode'])) {
        // 校验失败
        $this->error('验证码不正确');
      }
}

♞ 提示

官方文档—— 【ThinkPHP5.1 验证码指导】

  • 建议阅读 ..\vendor\topthink\think-captcha\src\helper.php 文件,及 Captcha.php ,可以进行样式的自定义.
  • 如果前端 {:captcha_img()} 有传值 id,那么后台 captcha_check() 验证也需要相应的 id 参数区分。
  • 验证结果,普遍使用 ajax 请求,以满足用户顺畅的体验.

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
如何在PHP中使用Oracle数据库(1)
Oct 09 PHP
?生?D片??C字串
Dec 06 PHP
PHP5+UTF8多文件上传类
Oct 17 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
PHP实现的比较完善的购物车类
Dec 02 PHP
PHP文件与目录操作示例
Dec 24 PHP
自制PHP框架之设计模式
May 07 PHP
php实现每日签到功能
Nov 29 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
PHP中quotemeta()函数的用法讲解
Apr 04 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 PHP
PHP join()函数用法与实例讲解
Mar 11 #PHP
PHP lcfirst()函数定义与用法
Mar 08 #PHP
浅谈PHPANALYSIS提取关键字
Mar 08 #PHP
PHP levenshtein()函数用法讲解
Mar 08 #PHP
PHP implode()函数用法讲解
Mar 08 #PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 #PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 #PHP
You might like
PHP网站基础优化方法小结
2008/09/29 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
jQuery Easyui实现左右布局
2016/01/26 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
2019/10/14 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
Python谱减法语音降噪实例
2019/12/18 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
python跨文件使用全局变量的实现
2020/11/17 Python
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
红旗团支部事迹材料
2014/01/27 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
初二学习计划书范文
2014/04/27 职场文书
计算机专业毕业生自荐书
2014/06/02 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
行政助理岗位职责
2015/02/10 职场文书
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers