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 相关文章推荐
定制404错误页面,并发信给管理员的程序
Oct 09 PHP
简单的过滤字符串中的HTML标记
Dec 25 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
加强版phplib的DB类
Mar 31 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
基于php下载文件的详解
Jun 02 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
php中数组最简单的使用方法
Dec 27 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
JQuery触发事件例如click
2013/09/11 Javascript
让angularjs支持浏览器自动填表
2014/11/10 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
关于Promise 异步编程的实例讲解
2017/09/01 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
python脚本设置超时机制系统时间的方法
2016/02/21 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
关于python3中setup.py小概念解析
2019/08/22 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
python脚本定时发送邮件
2020/12/22 Python
UNIX文件类型
2013/08/29 面试题
编辑找工作求职信分享
2014/01/03 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
安全施工责任书
2014/08/25 职场文书
公务员个人年终总结
2015/02/12 职场文书
运动会报道稿大全
2015/07/23 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android