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 操作符与控制结构
Mar 07 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
Sep 27 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
May 26 PHP
Thinkphp5结合layer弹窗定制操作结果页面
Jul 07 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
PHP实现时间日期友好显示实现代码
Sep 08 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/01/24 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
初识PHP中的Swoole
2016/04/05 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
js读写json文件实例代码
2014/10/21 Javascript
JsRender实用入门教程
2014/10/31 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
Angular 常用指令实例总结整理
2016/12/13 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
Python的Flask框架中web表单的教程
2015/04/20 Python
python实现flappy bird游戏
2018/12/24 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
如何通过python检查文件是否被占用
2020/12/18 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
高分子材料个人求职信范文
2013/09/25 职场文书
前台接待员岗位职责
2014/01/02 职场文书
工作表扬信的范文
2014/01/10 职场文书
车辆工程专业求职信
2014/04/28 职场文书
档案工作汇报材料
2014/08/21 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
工作保证书
2015/01/17 职场文书
个人党性分析总结
2015/03/05 职场文书
社区节水倡议书
2015/04/29 职场文书