关于tp验证码模块
转自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 ' . ')';
} - 打开
..\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验证码模块的更多相关文章
- Java Web模块——验证码模块
一.什么是验证码及它的作用 验 证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答. 可以防止恶意破解密码. ...
- Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块
这是一篇系列博文,我将使用Abp.Zero搭建一套集成手机号免密登录验证与号码绑定功能的用户系统: Abp.Zero 手机号免密登录验证与号码绑定功能的实现(一):验证码模块 Abp.Zero 手机号 ...
- TP 验证码
TP自带验证码类Verify.class.php 生成验证码 public function verify_c(){ session_start(); ob_clean(); $Verify = ne ...
- Tp验证码:$Verify = new \Think\Verify(); $Verify->entry(n);【参数n,页面有多个验证码时用】
一.验证码参数:(中文字符集和英文字符集在父类里面都可以取到,可修改) //1.生成验证码 $Verify = new \Think\Verify(); $Verify->entry(n);[参 ...
- 基于SSH框架下登录验证码模块的实现
1.前端页面代码: 主要以jQuery的ajax异步请求实现. ... <script type="text/javascript" src="${pageCont ...
- Node.js验证码模块captchapng
captchapng是一个基于pnglib模块开发,数字型验证码模块.内置字体.全JavaScript无其它依赖.不像有的验证码需要依赖canvas或者是需要编译,而且captchapng使用起来简单 ...
- 随机验证码模块(random)
1. 生成一个6位数字+字母的验证码 (面试题) import random l = []for i in range(6): alpha = chr(random.randint(65,90)) a ...
- tp验证码
一.生成验证码 1.commonController.class.php class CommonController extends Controller{ public function getV ...
- THINKPHP源码学习--------验证码类
TP3.2验证码类的理解 今天在学习中用到了THINKPHP验证码,为了了解究竟,就开始阅读TP验证码的源码. 源码位置:./ThinkPHP/Library/Think/Verify.class.p ...
随机推荐
- SpringBoot传递单一参数时@RequestParam和@RequestBody的区
用SpringBoot框架做项目时,经常需要前端给后端传递参数,如果需要多条参数,通常的做法是把这些参数封装为一个对象来传递,前端用POST方式调用.但有时会遇到后端只需要一条参数(比如一个Strin ...
- 深入Dagger:JavaPoet的使用
前言 最近在用Dagger开发应用,Dagger是google在square的基础上去反射的依赖注入框架. Dagger会根据定义的注解在编译阶段根据依赖注入的配置生成相应的代码,来减少运行期间反射的 ...
- shell只读变量
- Raid,分区表与LVM逻辑卷
1.组Raid 磁盘前512K组合 前446K:MBR引导程序 中64K:分区表 后2K:校检码 Raid0:极致的读写速度,一个数据分散到多个盘去读写.但是极不安全,一旦坏了一块盘那么所有盘都将无法 ...
- TCP协议中的三次握手和四次挥手(图解)(转)
转自:http://blog.csdn.net/whuslei/article/details/6667471 建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看 ...
- isPrototypeOf,hasOwnProperty
在看jquery源码的过程中,了解到isPrototypeOf属性.此属性只是Object.prototype的自有属性,即: Object.prototype.hasOwnProperty('isP ...
- static变量与普通变量的异同
1.static局部变量与普通局部变量的异同 相同点:都是局部变量,在函数内部定义,仅能被该模块内部的语句所访问. 不同点: 1)内存分配与释放: static修饰的局部变量在内存中存放在静态存储区, ...
- node-mysql连接数据库
const mysql=require('mysql') const con=mysql.createConnection({ host:'localhost', user:'root', passw ...
- java des 加密/解密
JAVA实现 加密 注意:DES加密和解密过程中,密钥长度都必须是8的倍数 public byte[] desCrypto(byte[] datasource, String password) { ...
- microservice-cloud-03-provider-product-8001
server: port: 8001 mybatis: config-location: classpath:mybatis/mybatis.cfg.xml # mybatis配置文 ...