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 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
浅析PHP水印技术
Feb 14 PHP
php学习之 循环结构实现代码
Jun 09 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 PHP
PHP可变函数的使用详解
Jun 14 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
php强制用户转向www域名的方法
Jun 19 PHP
php上传大文件设置方法
Apr 14 PHP
PHP判断表达式中括号是否匹配的简单实例
Oct 22 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
老生常谈PHP面向对象之解释器模式
May 17 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
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
2013/05/03 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
vue界面发送表情的实现代码
2020/09/11 Javascript
彻彻底底地理解Python中的编码问题
2018/10/15 Python
通过python检测字符串的字母
2020/02/18 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
python可以用哪些数据库
2020/06/22 Python
如何用Django处理gzip数据流
2021/01/29 Python
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
安全标准化汇报材料
2014/02/03 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
物业保安辞职信
2015/05/12 职场文书
社区低保工作总结2015
2015/07/23 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
Redis监控工具RedisInsight安装与使用
2022/03/21 Redis
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis