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 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
Dedecms V3.1 生成HTML速度的优化办法
Mar 18 PHP
php 缩略图实现函数代码
Jun 23 PHP
PHP 数据结构 算法 三元组 Triplet
Jul 02 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Apr 26 PHP
基于PHP异步执行的常用方式详解
Jun 03 PHP
php的curl封装类用法实例
Nov 07 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
jQuery+PHP实现图片上传并提交功能
Jul 27 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判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
jquery实现鼠标滑过显示提示框的方法
2015/02/05 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
js实现小时钟效果
2020/03/25 Javascript
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
商场活动策划方案
2014/01/24 职场文书
爱国主义演讲稿
2014/05/07 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
公司开除员工通知
2015/04/22 职场文书
新年祝酒词大全
2015/08/11 职场文书
大队委员竞选稿
2015/11/20 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang