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 相关文章推荐
对Session和Cookie的区分与解释
Mar 16 PHP
dedecms模板标签代码官方参考
Mar 17 PHP
php运行出现Call to undefined function curl_init()的解决方法
Nov 02 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
PHP实现算式验证码和汉字验证码实例
Mar 09 PHP
PHP中is_file()函数使用指南
May 08 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
PHP模板引擎Smarty内建函数详解
Apr 11 PHP
浅谈php和js中json的编码和解码
Oct 24 PHP
php读取XML的常见方法实例总结
Apr 25 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
PHP实现的简单AES加密解密算法实例
May 29 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
PHP4中实现动态代理
2006/10/09 PHP
隐性调用php程序的方法
2009/03/09 PHP
php上的memcache和memcached两个pecl库
2010/03/29 PHP
php ftp文件上传函数(基础版)
2010/06/03 PHP
PHP类继承 extends使用介绍
2014/01/14 PHP
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
PHP date_default_timezone_set()设置时区操作实例分析
2020/05/16 PHP
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
jquery ui resizable bug解决方法
2010/10/26 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
布同自制Python函数帮助查询小工具
2011/03/13 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
使用Python操作excel文件的实例代码
2017/10/15 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
如何在python中执行另一个py文件
2020/04/30 Python
美国知名艺术画网站:Art.com
2017/02/09 全球购物
校园运动会广播稿
2014/10/06 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js