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
PHP防注入安全代码
Apr 09 PHP
常用的php对象类型判断
Aug 27 PHP
php session 检测和注销
Mar 16 PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 PHP
php设计模式 Prototype (原型模式)代码
Jun 26 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
PHP连续签到功能实现方法详解
Dec 04 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
php中去除所有js,html,css代码
2010/10/12 PHP
跟我学Laravel之路由
2014/10/15 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
laravel中Redis队列监听中断的分析
2020/09/14 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
js Math数学简单使用操作示例
2020/03/13 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
Python中的is和id用法分析
2015/01/26 Python
python选择排序算法实例总结
2015/07/01 Python
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
Python下载网络小说实例代码
2018/02/03 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
从一次项目重构说起CSS3自定义变量在项目的使用方法
2021/03/01 HTML / CSS
详解html2canvas截图不能截取圆角图片的解决方案
2018/01/30 HTML / CSS
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
初中科学教学反思
2014/01/21 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
师德师风自查总结
2014/10/14 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书