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学习之正则表达式
Apr 17 PHP
PHP5中新增stdClass 内部保留类
Jun 13 PHP
php中取得文件的后缀名?
Feb 20 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
PHP使用Mysqli类库实现完美分页效果的方法
Apr 07 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 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中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
python获取各操作系统硬件信息的方法
2015/06/03 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
详解python中的模块及包导入
2019/08/30 Python
python 内置函数汇总详解
2019/09/16 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python实现滑雪者小游戏
2020/02/22 Python
利用Python优雅的登录校园网
2020/10/21 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
销售会计工作职责
2013/12/02 职场文书
迎八一活动主题
2014/01/31 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
《全神贯注》教学反思
2016/02/22 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python