ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】


Posted in PHP onMarch 11, 2019

本文实例讲述了ThinkPHP5.0框架验证码功能实现方法。分享给大家供大家参考,具体如下:

背景

ThinkPHP5.0 已经出现很久了,最近有所接触,下面介绍一下常用的第三方验证码功能的使用。

ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】

♜ 功能开发

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.0框架验证码功能实现方法【基于第三方扩展包】

3). captcha 扩展包代码优化

如果按照上述操作,显示的验证码图片并不能点击刷新,可自己根据需求进行刷新功能设计;或者,建议进行下面的代码优化:

function captcha_img($id = "")
{
  $js_src = "this.src='".captcha_src()."'";
  return '<img src="' . captcha_src($id) . '" title="点击更新验证码" alt="点击更新验证码" onclick="'.$js_src.'" />';
  //return '![](' . captcha_src($id) . ')';
}

打开 ..\vendor\topthink\think-captcha\src\helper.php 文件,替换上面的 captcha_img() 方法代码.

此时的验证码图片即可实现点击 实时刷新 功能.

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 请求,以满足用户顺畅的体验.

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP新手上路(十二)
Oct 09 PHP
PHP初学者最感迷茫的问题小结
Mar 27 PHP
php实现快速排序的三种方法分享
Mar 12 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
详解WordPress中给链接添加查询字符串的方法
Dec 18 PHP
深入分析PHP优化及注意事项
Jul 04 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
Nov 03 PHP
PHP实现的方程求解示例分析
Nov 11 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
php获取微信基础接口凭证Access_token
Aug 23 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
PHP join()函数用法与实例讲解
Mar 11 #PHP
PHP lcfirst()函数定义与用法
Mar 08 #PHP
浅谈PHPANALYSIS提取关键字
Mar 08 #PHP
PHP levenshtein()函数用法讲解
Mar 08 #PHP
PHP implode()函数用法讲解
Mar 08 #PHP
浅谈php使用curl模拟多线程发送请求
Mar 08 #PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 #PHP
You might like
图解上海144收音机
2021/03/02 无线电
实用函数2
2007/11/08 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
javascript之更有效率的字符串替换
2008/08/02 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
2014最热门的JavaScript代码高亮插件推荐
2014/11/25 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
js实现打字小游戏
2019/12/17 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
Python根据区号生成手机号码的方法
2015/07/08 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
分层教学实施方案
2014/03/19 职场文书
交通事故协议书
2014/04/15 职场文书
小学生操行评语大全
2014/04/22 职场文书
面试复试通知单
2015/04/24 职场文书
高中同学会致辞
2015/08/01 职场文书