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 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
杏林同学录(七)
Oct 09 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
php抽奖小程序的实现代码
Jun 18 PHP
基于php使用memcache存储session的详解
Jun 25 PHP
深入浅析php中sprintf与printf函数的用法及区别
Jan 08 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 PHP
因str_replace导致的注入问题总结
Aug 08 PHP
关于laravel框架中的常用目录路径函数
Oct 23 PHP
php7中停止php-fpm服务的方法详解
May 09 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简单图像创建入门实例
2015/06/10 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
15款最好的Bootstrap在线编辑器
2016/08/03 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
vue将单页面改造成多页面应用的方法
2018/11/25 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
JSON Web Tokens的实现原理
2017/04/02 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
Django实现表单验证
2018/09/08 Python
用python一行代码得到数组中某个元素的个数方法
2019/01/28 Python
python异步Web框架sanic的实现
2020/04/27 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
HTML5实现预览本地图片
2016/02/17 HTML / CSS
私人会所最新创业计划书范文
2014/03/24 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
小学教师个人总结
2015/02/05 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android