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伪静态写法附代码
Jun 20 PHP
PHP中=赋值操作符对不同数据类型的不同行为
Jan 02 PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
Dec 01 PHP
PHP汉字转换拼音的函数代码
Dec 30 PHP
详解PHP匿名函数与注意事项
Mar 29 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
Laravel 实现数据软删除功能
Aug 21 PHP
详解Laravel设置多态关系模型别名的方式
Oct 17 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 PHP
php实例化对象的实例方法
Nov 17 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
超级简单的发送邮件程序
2006/10/09 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
ES6 Set结构的应用实例分析
2019/06/26 Javascript
JavaScript判断浏览器版本的方法
2019/11/03 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
详解Python中的循环语句的用法
2015/04/09 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
TensorFlow实现创建分类器
2018/02/06 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
Django实现网页分页功能
2019/10/31 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
python 从list中随机取值的方法
2020/11/16 Python
python Scrapy框架原理解析
2021/01/04 Python
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
澳大利亚在线高跟鞋商店:Shoe Me
2019/11/19 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
文秘个人求职信范文
2014/04/22 职场文书
项目投资合作意向书
2014/07/29 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
七年级作文之冬景
2019/11/07 职场文书