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下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
基于PHP对XML的操作详解
Jun 07 PHP
解析php扩展php_curl.dll不加载的解决方法
Jun 26 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
php版交通银行网银支付接口开发入门教程
Sep 26 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
Jun 13 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
php layui实现前端多图上传实例
Jul 30 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 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
PHP 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
chrome调试javascript详解
2015/10/21 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
Vue实现验证码功能
2019/12/03 Javascript
JavaScript 如何在浏览器中使用摄像头
2020/12/02 Javascript
Python实现在线程里运行scrapy的方法
2015/04/07 Python
Python KMeans聚类问题分析
2018/02/23 Python
Python类反射机制使用实例解析
2019/12/30 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
python可迭代对象去重实例
2020/05/15 Python
python为什么要安装到c盘
2020/07/20 Python
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
学校火灾防控方案
2014/06/09 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
个人查摆剖析材料
2014/10/04 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
mysql函数全面总结
2021/11/11 MySQL
redis缓存存储Session原理机制
2021/11/20 Redis
Golang连接并操作MySQL
2022/04/14 MySQL