转自https://blog.csdn.net/u011415782/article/details/77367280

♜ 功能开发

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>

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('验证码不正确');
    }
    }

点击刷新验证码比较简单的编写方式,观察tp5 captcha模块的源码,我们可以发现,在助手函数中,tp5官方把验证码功能封装到了captcha路径之中,所以我们可以通过onclick 访问captcha路径就可以实现点击刷新验证码了

<img src="{:captcha_src()}" onclick="this.src='/captcha'">

关于tp验证码模块的更多相关文章

  1. Java Web模块——验证码模块

    一.什么是验证码及它的作用 验 证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答. 可以防止恶意破解密码. ...

  2. Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块

    这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号 ...

  3. TP 验证码

    TP自带验证码类Verify.class.php 生成验证码 public function verify_c(){ session_start(); ob_clean(); $Verify = ne ...

  4. Tp验证码:$Verify = new \Think\Verify(); $Verify->entry(n);【参数n,页面有多个验证码时用】

    一.验证码参数:(中文字符集和英文字符集在父类里面都可以取到,可修改) //1.生成验证码 $Verify = new \Think\Verify(); $Verify->entry(n);[参 ...

  5. 基于SSH框架下登录验证码模块的实现

    1.前端页面代码: 主要以jQuery的ajax异步请求实现. ... <script type="text/javascript" src="${pageCont ...

  6. Node.js验证码模块captchapng

    captchapng是一个基于pnglib模块开发,数字型验证码模块.内置字体.全JavaScript无其它依赖.不像有的验证码需要依赖canvas或者是需要编译,而且captchapng使用起来简单 ...

  7. 随机验证码模块(random)

    1. 生成一个6位数字+字母的验证码 (面试题) import random l = []for i in range(6): alpha = chr(random.randint(65,90)) a ...

  8. tp验证码

    一.生成验证码 1.commonController.class.php class CommonController extends Controller{ public function getV ...

  9. THINKPHP源码学习--------验证码类

    TP3.2验证码类的理解 今天在学习中用到了THINKPHP验证码,为了了解究竟,就开始阅读TP验证码的源码. 源码位置:./ThinkPHP/Library/Think/Verify.class.p ...

随机推荐

  1. SpringBoot传递单一参数时@RequestParam和@RequestBody的区

    用SpringBoot框架做项目时,经常需要前端给后端传递参数,如果需要多条参数,通常的做法是把这些参数封装为一个对象来传递,前端用POST方式调用.但有时会遇到后端只需要一条参数(比如一个Strin ...

  2. 深入Dagger:JavaPoet的使用

    前言 最近在用Dagger开发应用,Dagger是google在square的基础上去反射的依赖注入框架. Dagger会根据定义的注解在编译阶段根据依赖注入的配置生成相应的代码,来减少运行期间反射的 ...

  3. shell只读变量

  4. Raid,分区表与LVM逻辑卷

    1.组Raid 磁盘前512K组合 前446K:MBR引导程序 中64K:分区表 后2K:校检码 Raid0:极致的读写速度,一个数据分散到多个盘去读写.但是极不安全,一旦坏了一块盘那么所有盘都将无法 ...

  5. TCP协议中的三次握手和四次挥手(图解)(转)

    转自:http://blog.csdn.net/whuslei/article/details/6667471 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看 ...

  6. isPrototypeOf,hasOwnProperty

    在看jquery源码的过程中,了解到isPrototypeOf属性.此属性只是Object.prototype的自有属性,即: Object.prototype.hasOwnProperty('isP ...

  7. static变量与普通变量的异同

    1.static局部变量与普通局部变量的异同 相同点:都是局部变量,在函数内部定义,仅能被该模块内部的语句所访问. 不同点: 1)内存分配与释放: static修饰的局部变量在内存中存放在静态存储区, ...

  8. node-mysql连接数据库

    const mysql=require('mysql') const con=mysql.createConnection({ host:'localhost', user:'root', passw ...

  9. java des 加密/解密

    JAVA实现 加密 注意:DES加密和解密过程中,密钥长度都必须是8的倍数 public byte[] desCrypto(byte[] datasource, String password) { ...

  10. microservice-cloud-03-provider-product-8001

    server:  port: 8001 mybatis:  config-location: classpath:mybatis/mybatis.cfg.xml        # mybatis配置文 ...