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仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
php 修改、增加xml结点属性的实现代码
Oct 22 PHP
CI框架Session.php源码分析
Nov 03 PHP
PHP扩展模块memcached长连接使用方法分析
Dec 24 PHP
php支付宝接口用法分析
Jan 04 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PHP实现打包zip并下载功能
Jun 12 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/09/05 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
2016/11/29 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
js实现开关灯效果
2020/03/30 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
vue-router为激活的路由设置样式操作
2020/07/18 Javascript
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
详解Python之unittest单元测试代码
2018/01/24 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
Python基本socket通信控制操作示例
2019/01/30 Python
django模板结构优化的方法
2019/02/28 Python
Django3.0 异步通信初体验(小结)
2019/12/04 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
Java基础类库面试题
2013/09/04 面试题
高中军训广播稿
2014/01/14 职场文书
优秀员工表扬信
2014/01/17 职场文书
公务员培的训心得体会
2014/09/01 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
python运算符之与用户交互
2022/04/13 Python