ThinkPHP5.1验证码功能实现的示例代码


Posted in PHP onJune 08, 2020

۩ 背景

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

ThinkPHP5.1验证码功能实现的示例代码

环境

  • 框架版本: ThinkPHP5.1.2
  • 运行环境: CentOS7.2、phpStudy2017、Nginx

♜ 功能开发

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.1验证码功能实现的示例代码

3). captcha 扩展包代码优化

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

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

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

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

【注意:2020-02-26】

最近发现,直接在CSDN上复制上面的代码,“onclick” 粘贴后不是正常的代码,注意 “o”字母,建议有问题时可手打一下即可!

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 请求,以满足用户顺畅的体验.

到此这篇关于ThinkPHP5.1验证码功能实现的示例代码的文章就介绍到这了,更多相关ThinkPHP5.1验证码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
随机头像PHP版
Oct 09 PHP
用PHP调用Oracle存储过程
Oct 09 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
May 18 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
PHP使用正则表达式清除超链接文本
Nov 12 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)实例详解
Apr 20 PHP
PHP树形结构tree类用法示例
Feb 01 PHP
PHP 对象接口简单实现方法示例
Apr 13 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 #PHP
CI框架简单分页类用法示例
Jun 06 #PHP
简单的php购物车代码
Jun 05 #PHP
实例化php类时传参的方法分析
Jun 05 #PHP
PHP页面静态化――纯静态与伪静态用法详解
Jun 05 #PHP
PHP预定义接口――Iterator用法示例
Jun 05 #PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
Jun 05 #PHP
You might like
简单易用的计数器(数据库)
2006/10/09 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
docker-compose部署php项目实例详解
2019/07/30 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
javascript引用对象的方法代码
2007/08/13 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
布同 统计英文单词的个数的python代码
2011/03/13 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
python实时获取外部程序输出结果的方法
2019/01/12 Python
Python中整数的缓存机制讲解
2019/02/16 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
数学专业毕业生自荐信
2013/11/10 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
出生公证书
2015/01/23 职场文书
建筑工程催款函
2015/06/24 职场文书
Python循环之while无限迭代
2022/04/30 Python
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL