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_MySQL教程-第一天
Mar 18 PHP
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
Nov 18 PHP
PHP获取文件绝对路径的代码(上一级目录)
May 29 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 PHP
10个超级有用值得收藏的PHP代码片段
Jan 22 PHP
PHP+ajax分页实例简析
Dec 07 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
基于PHP制作验证码
Oct 12 PHP
PHP中遍历数组的三种常用方法实例分析
Jun 24 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
Jul 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环境搭建最新方法
2006/09/05 PHP
用php将任何格式视频转为flv的代码
2009/09/03 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
利用JS生成博文目录及CSS定制博客
2016/02/10 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
详解如何构建一个Angular6的第三方npm包
2018/09/07 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
[01:30:54]《加油DOTA》 第三期
2014/08/18 DOTA
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
Python常用正则表达式符号浅析
2014/08/13 Python
python使用Berkeley DB数据库实例
2014/09/26 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
加拿大留学自荐信
2014/01/28 职场文书
租房协议书范文
2014/08/20 职场文书
承诺书模板
2014/08/30 职场文书
临时租车协议范本
2014/09/23 职场文书
2014年法务工作总结
2014/12/11 职场文书
无锡灵山大佛导游词
2015/02/09 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
八月迷情观后感
2015/06/11 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
Pycharm 如何设置HTML文件自动补全代码或标签
2021/05/21 Python
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL