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 相关文章推荐
将数字格式的计算结果转为汉字格式
Oct 09 PHP
BBS(php &amp; mysql)完整版(七)
Oct 09 PHP
一周学会PHP(视频)Http下载
Dec 12 PHP
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
php compact 通过变量创建数组
Nov 15 PHP
thinkPHP5 tablib标签库自定义方法详解
May 10 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 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
批量修改RAR文件注释的php代码
2010/11/20 PHP
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
学习PHP session的传递方式
2016/06/15 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
2017/08/10 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
java必学必会之static关键字
2015/12/03 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
python远程登录代码
2008/04/29 Python
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
Python地图绘制实操详解
2019/03/04 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
学python需要去培训机构吗
2020/07/01 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
中级会计职业生涯规划范文
2014/01/16 职场文书
幼儿园见习报告
2014/10/30 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
详解Python常用的魔法方法
2021/06/03 Python
Python面向对象编程之类的概念
2021/11/01 Python
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫