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下mysql数据库操作类(改自discuz)
Jul 03 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
PHP 图片水印类代码
Aug 27 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 PHP
PHP自带函数给数字或字符串自动补齐位数
Jul 29 PHP
PHP根据两点间的经纬度计算距离
Oct 31 PHP
PHP中的流(streams)浅析
Jul 02 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
Jan 07 PHP
PHP数字金额转换成中文大写显示
Jan 05 PHP
Laravel基础_关于view共享数据的示例讲解
Oct 14 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
浅谈使用React.setState需要注意的三点
2017/12/18 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
VUE实现吸底按钮
2021/03/04 Vue.js
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
基于matplotlib xticks用法详解
2020/04/16 Python
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
求职信的要素有哪些呢
2013/12/26 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
世界红十字日活动总结
2015/02/10 职场文书
教师个人年度总结
2015/02/11 职场文书
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB
使用Python开发冰球小游戏
2022/04/30 Python
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server