ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则

ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则

  • 一、安装
  • 二、页面使用
  • 三、验证码相关配置属性
    • 1. 自定义验证码配置
    • 2. 自定义验证码(一)普通验证码
    • 3. 自定义验证码(二)算数验证码
    • 4. 自定义验证码(三)中文验证码
    • 5. 验证校验

一、安装

首先,验证码扩展库是需要view扩展的

composer require topthink/think-view

安装完成后,接着安装验证码扩展库

composer require topthink/think-captcha

视图使用的说明:
在这里插入图片描述

二、页面使用

页面使用的话,两种方式

<div>{:captcha_img()}</div><!--或者 --><div><img src="{:captcha_src()}" alt="captcha" /></div>

侧重说明一下,使用第二种方式

我们只需要在控制器中提供一个方法,用于验证码的生成,然后前端将img的src属性修改为对应的方法路径即可

在这里插入图片描述

在这里插入图片描述

三、验证码相关配置属性

属性说明:

参数描述默认
codeSet验证码字符集合
expire验证码过期时间(s)
math使用算术验证码false
useZh使用中文验证码false
zhSet中文验证码字符串
useImgBg使用背景图片false
fontSize验证码字体大小(px)25
useCurve是否画混淆曲线true
useNoise是否添加杂点true
imageH验证码图片高度,设置为0为自动计算0
imageW验证码图片宽度,设置为0为自动计算0
length验证码位数5
fontttf验证码字体,不设置是随机获取
bg背景颜色[243, 251, 254]
reset验证成功后是否重置true

1. 自定义验证码配置

安装验证码扩展后,在当前项目中的全局配置文件config目录中,会多出一项captcha.php用于配置验证码的相关配置。

在这里插入图片描述

在单应用模式下,我们可以直接通过config/captcha.php 来配置项目中的验证码相关配置。

多应用模式下的话,将config/captcha.php 拷贝一份到每个应用中的config目录中,然后在根据不同的应用去修改相应的验证码配置。

2. 自定义验证码(一)普通验证码

<?php// +----------------------------------------------------------------------// | Captcha配置文件// +----------------------------------------------------------------------return [//验证码位数'length'   => 4,// 验证码字符集合'codeSet'  => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',// 验证码过期时间'expire'   => 1800,// 是否使用中文验证码'useZh'    => false,// 是否使用算术验证码'math'     => false,// 是否使用背景图'useImgBg' => false,//验证码字符大小'fontSize' => 25,// 是否使用混淆曲线'useCurve' => false,//是否添加杂点'useNoise' => false,// 验证码字体 不设置则随机'fontttf'  => '',//背景颜色'bg'       => [243, 251, 254],// 验证码图片高度'imageH'   => 0,// 验证码图片宽度'imageW'   => 0,// 添加额外的验证码设置// verify => [//     'length'=>4,//    ...//],];

在这里插入图片描述

3. 自定义验证码(二)算数验证码

<?php
// +----------------------------------------------------------------------
// | Captcha配置文件
// +----------------------------------------------------------------------return [//验证码位数'length'   => 4,// 验证码字符集合'codeSet'  => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',// 验证码过期时间'expire'   => 1800,// 是否使用中文验证码'useZh'    => false,// 是否使用算术验证码'math'     => true,// 是否使用背景图'useImgBg' => false,//验证码字符大小'fontSize' => 25,// 是否使用混淆曲线'useCurve' => false,//是否添加杂点'useNoise' => false,// 验证码字体 不设置则随机'fontttf'  => '',//背景颜色'bg'       => [243, 251, 254],// 验证码图片高度'imageH'   => 0,// 验证码图片宽度'imageW'   => 0,// 添加额外的验证码设置// verify => [//     'length'=>4,//    ...//],
];

在这里插入图片描述

4. 自定义验证码(三)中文验证码

<?php// +----------------------------------------------------------------------// | Captcha配置文件// +----------------------------------------------------------------------return [//验证码位数'length'   => 4,// 验证码字符集合'codeSet'  => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',// 验证码过期时间'expire'   => 1800,// 是否使用中文验证码'useZh'    => true,// 是否使用算术验证码'math'     => false,// 是否使用背景图'useImgBg' => false,//验证码字符大小'fontSize' => 25,// 是否使用混淆曲线'useCurve' => false,//是否添加杂点'useNoise' => false,// 验证码字体 不设置则随机'fontttf'  => '',//背景颜色'bg'       => [243, 251, 254],// 验证码图片高度'imageH'   => 0,// 验证码图片宽度'imageW'   => 0,// 添加额外的验证码设置// verify => [//     'length'=>4,//    ...//],];

在这里插入图片描述

5. 验证校验

这里为了简单演示,就使用一个表单校验一下:

  1. 页面部分
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><form action="http://robinadmin.com/index.php/index/check" method="get"><input name="yzm" type="text"> <div style="display: inline-block">{:captcha_img()}</div><input type="submit" value="提交"><p>{$rs}</p></form></body>
</html>
  1. 后台校验部分
<?php
declare (strict_types = 1);namespace app\admin\controller;use think\facade\View;
use think\Request;class Index
{public function index(){return View::fetch();}public function hello(){return view::fetch('hello',['rs'=>' ']);}// 验证public function check(Request $request){// 1.获取验证码$yzm = $request->param('yzm');// 2.比对校验if(!captcha_check($yzm)){return view::fetch('hello',['rs'=>'验证码错误']);}// 3.返回结果return view::fetch('hello',['rs'=>'验证码正确']);}
}

上面的验证规则也可以修改如下,然后多提一嘴,实时验证的功能就是前端不断的发送请求给后端,当你的输入框的值改变时。

    public function check(Request $request){// 比对校验 input('请求方式.验证码输入框name名称')if(!captcha_check(input('get.yzm'))){return view::fetch('hello',['rs'=>'验证码错误']);}// 返回结果return view::fetch('hello',['rs'=>'验证码正确']);}

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620191.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

linux会话session

linux会话 什么是linux session 我们常见的 Linux session 一般是指 shell session。Shell session 是终端中当前的状态&#xff0c;在终端中只能有一个 session。 当我们打开一个新的终端时&#xff0c;总会创建一个新的 shell session。这表明会话是我们和shell交互的一个过…

session是什么

前言&#xff1a; 今天就来彻底的学一些session是个啥东西&#xff0c;我罗列了几个需要知道的要点&#xff1a; 1.session 是啥&#xff1f; 2.怎么保存的&#xff1f; 3.如何运行&#xff1f; 4.有生命周期吗&#xff1f; 5.关闭浏览器会过期吗&#xff1f; 6.Redis代替文件存…

Session是什么东西

虽然经常做的C,Web 写的少&#xff0c;但是这个知识在面试中经常遇到&#xff0c;现在就记录一下。 Web的三个概念&#xff1a; Session 、 cookie、 application。 Session 和 Cookie 功能效果是差不多的&#xff0c;区别就是session 是记录在服务端的&#xff0c;Cookie是记…

Python—Session

python中session()是干什么作用的_session是什么意思 Session&#xff1a;在计算机中&#xff0c;尤其是在网络应用中&#xff0c;称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样&#xff0c;当用户在应用程序的 Web 页之间跳转时&#xff0c;存储…

彻底弄清楚session是什么?

前言&#xff1a; 今天就来彻底的学一些session是个啥东西&#xff0c;我罗列了几个需要知道的要点&#xff1a; 1.session 是啥&#xff1f; 2.怎么保存的&#xff1f; 3.如何运行&#xff1f; 4.有生命周期吗&#xff1f; 5.关闭浏览器会过期吗&#xff1f; 6.redis代替文…

浅谈 Cookie 和 Session

理解Cookie理解Session核心方法案例-网页登录1. 编写一个简单的登录页面2. 编写一个 Servlet 来处理这个登录请求3. 编写服务器返回主页的逻辑4. 启动服务器验证 Cookie 和 Session 区别 理解Cookie 在前面的 HTTP 协议中,也理解过这个 Cookie,HTTP 协议自身是属于 “无状态”…

session是什么?

目录&#xff1a; 1.session 是啥&#xff1f; 2.怎么保存的&#xff1f; 3.如何运行&#xff1f; 4.有生命周期吗&#xff1f; 5.关闭浏览器会过期吗&#xff1f; 6.Redis代替文件存储session 7.分布式session的同步问题 session是啥&#xff1f; 首先&#xff0c;我大致的…

什么是session?

最近在学习node.js 的express框架&#xff0c;接触到了关于session方面的内容。翻阅了一些的博客&#xff0c;学到了不少东西&#xff0c;发现一篇博文讲的很好&#xff0c;概念内容摘抄如下&#xff1a; Session是什么 Session一般译作会话&#xff0c;牛津词典对其的解释是…

session的到底是做什么的?

前言&#xff1a; 今天就来彻底的学一些session是个啥东西&#xff0c;我罗列了几个需要知道的要点&#xff1a; 1.session 是啥&#xff1f; 2.怎么保存的&#xff1f; 3.如何运行&#xff1f; 4.有生命周期吗&#xff1f; 5.关闭浏览器会过期吗&#xff1f; 6.Redis代替文…

Session(超详细)

Session 会话 1.什么是 Session 会话? Session 就一个接口&#xff08;HttpSession&#xff09;。Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。每个客户端都有自己的一个 Session 会话。Session 会话中&#xff0c;我们经常用来保存用户登录之后的…

Session详解(重点)

什么是Session: &#xff08;1&#xff09;服务器会给每一个用户&#xff08;浏览器&#xff09;创建一个Session对象 比如我们现在都去访问百度&#xff0c;我们使用双核浏览器和谷歌浏览器同时访问百度这个网址&#xff0c;百度那边会有两个session,因为浏览器不一样&#x…

Session原理

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术&#xff1a;Java&#xff0c;HTTP协议&#xff0c;session原理 撰写时间&#xff1a;2019-06-17 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

Session详解

Session(重点) 什么是Session&#xff1a; 服务器会给每一个用户&#xff08;浏览器&#xff09;创建一个Session对象一个Session独占一个浏览器&#xff0c;只要浏览器没有关闭&#xff0c;这个Session就存在用户登陆之后&#xff0c;整个网站它都可以访问–>保存用户的信…

Session详解,学习Session,这篇文章就够了(包含底层分析和使用)

说明&#xff1a;下面介绍session&#xff0c;我们使用到了游览器抓包&#xff0c;http的知识&#xff0c;如果不了解&#xff0c;请先简单了解下。http介绍&#xff0c;http请求&#xff0c;http响应。因为cookie和session是一对”好兄弟“&#xff0c;我们介绍session也要使用…

移动端VIN码识别技术的出现,为汽配供应链带来便捷

汽配供应链作为汽车后市场一大蓝海&#xff0c;成为众多商家的“必争之地”。在现今人工智能大数据的大环境下&#xff0c;拥抱科技&#xff0c;运用人工智能技术构建智能化数据平台成为提升企业行业竞争力的首选。 VIN码即车架号就是汽车的唯一的身份证&#xff0c;汽车从下线…

harrier 查看查看服务器状态,机油尺检查细节多多,嘉普力汽配工场教你如何正确查看机油尺...

平常我们总是说烧机油、机油消耗、机油增多&#xff0c;很多车主都快得"机油恐惧症"了&#xff0c;时刻担心自己的机油出现问题。既然担心就要查机油&#xff0c;那么你会看机油尺吗&#xff1f;今天&#xff0c;嘉普力汽配工场就教车主朋友们如何正确查看机油尺。 机…

汽车汽配行业B2B电子商务系统营销渠道自动化,综合提升B2B平台交易效率

汽车工业作为国家制造业的支柱之一&#xff0c;是衡量国家工业水平的基本指标。不断完善汽车工业整体的行业规范&#xff0c;促进汽车工业更稳定、更健康的发展&#xff0c;才能有效提升汽车工业的经济作用及影响力。 4S店模式&#xff0c;作为我国一直以来最主要的汽车销售模…

数商云采购系统对账结算功能介绍 | 缩短汽配企业结算周期,提高资金周转效率

近年来随着市场饱和度增加、竞争加剧&#xff0c;特别是信息技术的广泛发展&#xff0c;造成相当程度的平衡打破&#xff0c;使得通过平台化提升汽配供应链整体效率并建立主体间信任的可塑性增强&#xff0c;汽配供应链迎来新的变局。 作为名副其实的中小企业&#xff0c;汽配…

《汽修汽配管理系统——“汽修管理”模块》项目研发阶段性总结

完成模块功能&#xff1a;汽修管理&#xff08;预约维修&#xff0c;客户接待&#xff0c;售后服务&#xff09; 一、 功能实现 汽修管理主要包括预约维修&#xff0c;客户接待&#xff0c;售后服务 预约维修见图一&#xff0c; 该页面可查看老客户的资料&#xff0c;也可对第…

汽车汽配行业智慧供应链系统:提升企业效率,构建SCM平台数字化优势

过去几年&#xff0c;中国汽车产业经历了快速的发展阶段&#xff0c;已经成为全球最大的汽车市场。其中&#xff0c;汽车产业链、供应链有序、畅通的运转对中国汽车行业保持健康平稳发展起到了重要的支撑作用。随着新一轮技术革命到来&#xff0c;中国汽车供应链正面临着无限的…