验证码的生成和验证

验证码生成 Completely Automated Public Turing test to tell Computers and Humans Apart 看到这一长串英文,会不会很懵,它的意思是全自动区分计算机和人类的图灵测试。就是我们熟知的验证码。在日常的学习生活中,或多或少的接触过这样那样的验证码图片。 今天,让我们一起来探讨一下如何用OPENCV生成这些验... 阅读详情

Thinkphp框架中自带验证码的生成和验证功能 Verify.class.PHP ,在ThinkPHP/Library/Think目录下面

简单使用,在控制器中

public function verify(){  
    $Verify = new \Think\Verify();  
    $Verify->fontSize = 18;  // 验证码字体大小(像素)
    $Verify->length   = 4;   // 验证码位数
    $Verify->useNoise = false;  //是否添加杂点 默认为true
    $Verify->codeSet = '0123456789';  // 验证码字符集合
    $Verify->imageW = 130;  // 验证码宽度 设置为0为自动计算
    $Verify->imageH = 50;   // 验证码高度 设置为0为自动计算
    $Verify->entry();  
}

在前台代码中

<div id="reg">
	<h2>会员登录</h2>
	<form method="post" action="http://testphp.com/home/users/entry">
		<div>
			<br />
			<div>用  户 名:<input type="text" name="username" class="text" /></div>
			<br />
			<div>密  码:<input type="password" name="password" class="text" /></div>
			<br />
			<div>验  证  码:<input name="verify" width="50%" height="50" class="captcha-text"  type="text" /></div>
			<br />                
			<div><img width="20%" class="left15" height="30" alt="验证码" src="__APP__/home/users/verify" title="点击刷新" onclick="this.src='__APP__/home/users/verify?'+Math.random()" /></div>  <!-- Math.random()可以产生随机数,可以有效的进行验证码刷新 -->
			<br />
			<div><input type="submit" class="submit" value="登录" />      <a href="http://testphp.com/home/users/reg">免费注册</a></div>
		</div>
	</form>
</div>


即可实现一个简单数字验证码的生成与验证,效果如下图:



详细信息

最简单的方式生成验证码:

$Verify = new \Think\Verify();
$Verify->entry();

上面的代码会生成默认的验证码图片并输出,显示如下:


生成的验证码信息会保存到session中,包含的数据有:

array(
	'verify_code'=>'当前验证码的值',
	'verify_time'=>'验证码生成的时间戳'
)
如果需要在一个页面中生成多个验证码的话,entry方法需要传入可标识的信息,例如:

验证码1

// 验证码1
$Verify = new \Think\Verify();
$Verify->entry(1);
验证码2

// 验证码2
$Verify = new \Think\Verify();
$Verify->entry(2);

验证码参数

可以对生成的验证码设置相关的参数,以达到不同的显示效果。 这些参数包括:

参数描述
expire验证码的有效期(秒)
useImgBg是否使用背景图片 默认为false
fontSize验证码字体大小(像素) 默认为25
useCurve是否使用混淆曲线 默认为true
useNoise是否添加杂点 默认为true
imageW验证码宽度 设置为0为自动计算
imageH验证码高度 设置为0为自动计算
length验证码位数
fontttf指定验证码字体 默认为随机获取
useZh是否使用中文验证码
bg验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)
seKey验证码的加密密钥
codeSet验证码字符集合 3.2.1 新增
zhSet验证码字符集合(中文) 3.2.1 新增















参数设置使用两种方式

实例化传入参数:

Public function verify(){
    $config =    array(
   		'fontSize'    =>    30,    // 验证码字体大小
		'length'      =>   3,     // 验证码位数
   		'useNoise'    =>    false, // 关闭验证码杂点
   );
    $verify = new \Think\Verify($config);
    $verify->entry();
}

动态设置的方式:

$Verify = new \Think\Verify();
$Verify->fontSize = 30;
$Verify->length = 3;
$Verify->useNoise = false;
$Verify->entry();

生成的验证码如图所示:


验证码字体

默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体,例如:

$Verify = new \Think\Verify();
// 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
$Verify->fontttf = '5.ttf';
$Verify->entry();


背景图片

支持验证码背景图片功能:

$Verify = new \Think\Verify();
// 开启验证码背景图片功能 随机使用 ThinkPHP/Library/Think/Verify/bgs 目录下面的图片
$Verify->useImgBg = true;
$Verify->entry();
效果如图所示:


中文验证码

$Verify = new \Think\Verify();
// 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
$Verify->useZh = true;
$Verify->entry();
效果如图所示:



如果无法正常显示,需要确认 ThinkPHP/Library/Think/Verify/zhttfs/ 目录下面存在中文字体文件。


指定验证码字符

通过重新设置codeSet参数:

$Verify = new \Think\Verify();
// 设置验证码字符为纯数字
$Verify->codeSet = '0123456789';
$Verify->entry();


如果是中文验证码,可以使用zhSet参数设置:

$Verify = new \Think\Verify();
$Verify->useZh = true;
// 设置验证码字符
$Verify->zhSet = '们以我到他会作时要动国产的一是工就年阶义发成部民可出能方进在了不和有大这';
$Verify->entry();

验证码检测

可以用Think\Verify类的check方法检测验证码的输入是否正确:

// 检测输入的验证码是否正确,$code为用户输入的验证码字符串
function check_verify($code, $id = ''){
	$verify = new \Think\Verify();
	return $verify->check($code, $id);
}



验证码字符集 用来制作验证码所需的字符集,内容丰富,格式多样,有很好的使用价值哦 立即下载

相关推荐

告别手动归档:基于Allegro Skill的XTools一键生成Gerber与生产文件实践

本文详细介绍了基于Allegro Skill的XTools工具如何实现一键生成Gerber与生产文件,大幅提升PCB设计效率。通过自动化流程,解决了传统手动归档中的重复劳动、人为失误和标准不统一等问题,特别适合需要频繁输出生产文件的工程师。文章包含安装配置、实战操作、问题排查及进阶技巧,帮助用户快速掌握这一高效工具。

weixin_30505225的博客 461

如何使用ThinkPHP框架进行验证码生成

只需要几个步骤,你就可以轻松地生成一个强大的验证码,并保护你的web应用免受恶意攻击。在用户提交表单后,我们可以使用check()方法来检查用户输入的验证码是否正确。在这里,captcha_src()是一个用于生成验证码图片URL的方法。在web开发中,我们常常使用验证码来防止恶意攻击,比如机器人攻击和垃圾信息。phpphp更改字体颜色:phpphp添加干扰线可以在一定程度上增加验证码的难度和安全性。要使用ThinkPHP框架生成验证码,首先你需要确保你的ThinkPHP版本是大于等于5.0的。

2301_78316833的博客 912

SpringBoot项目实战:5分钟搞定豆包大模型API接入(附完整代码)

本文详细介绍了如何在SpringBoot项目中快速集成豆包大模型API,仅需5分钟即可完成。从环境准备、依赖配置到核心服务封装和控制器层实现,提供了完整的代码示例和实战技巧,帮助开发者高效接入大模型能力,提升智能客服等应用的开发效率。

weixin_30566063的博客 439

ThinkPHP 验证码简单实现

ThinkPHP版本6.1,验证码功能是外置的,安装后通过简单的配置后即可使用,十分方便。

json_li的博客 1280

深度解析快递柜管理系统的C++实现:设计与实现

本文详细介绍了一个基于C++的快递柜管理系统的设计与实现,包括系统需求分析、架构设计、数据库设计、关键功能模块实现和测试与验证。通过详细的代码示例和理论分析,读者可以全面了解如何开发一个完整的快递柜管理系统。希望本文能够为读者在实际项目开发中提供有价值的参考。

m0_57781768的博客 714

AI应用安全 - Prompt注入攻击

随着大模型的爆火,各行各业都在使用大模型进行智能化改造。但是如何做一个可靠的大模型应用,就需要考虑各种安全问题。本文主要介绍一种常见的安全问题,即prompt注入攻击,并介绍一些防范手段。Prompt Injection Attack(提示注入攻击)是针对大型语言模型(LLM)的一种新兴安全威胁,攻击者通过精心构造的输入提示(prompt)来操纵模型行为,使其产生非预期输出或执行恶意操作。它主要包括两种注入方式,一是直接注入,而是间接注入。

sinat_28694519的博客 1932

Thinkphp 6.0验证码功能

Thinkphp 6.0学习一下验证码功能,这功能是外置的,并非系统内置。

qq_34820433的博客 941

nRF52382低功耗蓝牙应用开发之入门教程-软件烧录

准备工作在上一篇文章讲过了,这里就讲讲nRFgo studio的使用 硬件准备: J-link:2线 供电:3.3V 如下图打开nRFgo studio界面介绍, 2、如果J-link正常,如下图 3、如果蓝牙芯片正常 4、烧录过程,如果蓝牙芯片之前有烧录过程序,需先点擦除,再点烧录 5、烧录代码路劲,例如 F:\nRF\SDK\nRF5_SDK_15.2.0_...

LinQiPing233的博客 1945

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

安装验证码扩展后,在当前项目中的全局配置文件config目录中,会多出一项captcha.php用于配置验证码的相关配置。在单应用模式下,我们可以直接通过config/captcha.php 来配置项目中的验证码相关配置。多应用模式下的话,将config/captcha.php 拷贝一份到每个应用中的config目录中,然后在根据不同的应用去修改相应的验证码配置。php// | Captcha配置文件return [//验证码位数// 验证码字符集合// 验证码过期时间。

m0_63622279的博客 2053

YOLOv11改进 | Neck篇 | 双向特征金字塔网络BiFPN助力YOLOv11有效涨点

本文给大家带来的改进机制是BiFPN双向特征金字塔网络,其是一种特征融合层的结构,也就是我们本文改进YOLOv11模型中的Neck部分,它的主要思想是通过多层级的特征金字塔和双向信息传递来提高精度。本文给大家带来的结构可以让大家自行调节网络结构大小,同时能够达到一定的轻量化效果,为什么发BiFPN呢因为它算是YOLO系列改进中的常青树了,大家可以借鉴它的双向特征思想来创新自己的Neck结构本文的BiFPN通过yaml文件配置可以让大家自行调配其结构。

Snu77的博客 9101

NVP6324、NVP6188、NVP6158C的区别详解

根据搜索结果,NVP6324、NVP6188、NVP6158C是Nextchip公司推出的不同型号视频处理芯片,主要区别体现在应用场景、功能特性、接口支持及封装规格等方面。如需进一步技术细节(如寄存器配置或开发支持),可参考具体型号的规格书或联系Nextchip代理商。

小灰灰的博客 3004

使用ThinkPHP实现生成/校验验证码功能

首先了解父类Verity.class.php(ThinkPHP/Library/Think/Verity.class.php)中的一些函数 1:check() 校验验证码是否正确 2:entry()输出验证码并把验证码的值保存的session中 3:authcode()加密验证码(此方法在check()方法中被调用) 控制器生成验证码代码: //验证码 function verify...

qq_25285531的博客 445

问答式AI vs 智能体(Agent):它们有什么不同?

你肯定用过 ChatGPT 或文心一言——问它一个问题,它给你一个答案。AI Agent(AI智能体)。很多人搞不清楚:它们不都是"AI"吗?有什么区别?这篇文章用一个最简单的类比,彻底讲清楚这两者的本质差异。框架特点适合人群AutoGPT完全自主执行任务,链式思考开发者MetaGPT模拟团队协作,多角色分工开发者LangChain最流行的Agent开发框架开发者Dify可视化无代码搭建Agent非技术用户Coze(扣子)字节跳动出品,国内最易用普通用户WorkBuddy。

Johnny2004的专栏 447

验证码图片生成和验证

开发工具与关键技术:VS 验证码 作者:听民谣的老猫 撰写时间:2019/6/7 13:10 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190609185843868.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG...

猫老爷 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

golang 图片验证码的生成、验证

依赖包 使用该方法实现图片验证码、必须先安装依赖的包,如果安装出错,请百度安装方法。 “github.com/mojocn/base64Captcha” 生成验证码、以及验证方法 验证图片验证码是否正确,只需要在验证的接口中调用VerfiyCaptcha方法即可。 import ( "fmt" "github.com/mojocn/base64Captcha" "sync" ) type ...

LH7777的博客 4920

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

js生成验证码并验证

验证码 #code { font-family:Arial; font-style:italic; font-weight:bold; border:0; letter-spacing:2px; color:blue; }

秋叶为何落 8万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

springboot生成验证码,将验证码存入redis,验证验证码

@Api(tags = "验证码") @RestController @RequestMapping("/validateCode") public class ValidateCodeController { @Autowired private RedisTemplate<String, String> redisTemplate; @ApiOperat...

weixin_45121502的博客 2294

如何生成验证码图片

开发工具与关键技术:Visual Studio + C# 撰写时间:2019.6.16 在我们日常生活中所使用到的登录页面,经常会遇到需要输入验证码登录,根据生成的验证码图片输入正确的字符串(一般都是字母+数字)进行验证,验证码不正确则无法验证登陆。那么我们是如何去随机生成不同的验证码图片的呢?下面就来进行简要的介绍。 如下图,是我们经常看到的登陆界面的验证部分,如果...

weixin_44541136的博客 1万+

PHP生成图片验证码和验证码验证

绘制验证码的过程可分为: 创建一个指定大小的画板 给这画板填充一个背景色 开始画你想要的图形 PHP图形处理依赖GD库在开始前 执行打印当前安装的 GD 库的信息 <?php var_dump(gd_info()); ?> 显示的大致与下面差不多,那么我们就可以继续了 array(13) { ["GD Version"]=>string(26) "bundled...

qq_31508839的博客 1600

java 验证码生成_Java生成验证码并进行验证

一、实现思路使用BufferedImage用于在内存中存储生成的验证码图片使用Graphics来进行验证码图片的绘制,并将绘制在图片上的验证码存放到session中用于后续验证最后通过ImageIO将生成的图片进行输出通过页面提交的验证码和存放在session中的验证码对比来进行校验二、生成验证码页面通过访问servlet来生成验证码,servlet中的代码如下:package org.test;...

weixin_31067561的博客 1055

java生成验证码登录,生成验证码

这里写了一个生成验证码的demo 前台可以访问该servlet页面显示验证码 验证码 后台存的session名称为vCode 判断验证码是否正确时可以直接调用 前台通过 这里你就自己引入jq吧 <img src="ValidateCodeServle" id="src"> <a onclick="code()">看不清楚,换一张</a> <script...

不负好时光的博客 1109

Java 实现生成验证码以及验证

代码包含生成验证码,验证验证码,以及验证码的失效时间 标题代码包含生成验证码,验证验证码,以及验证码的失效时间生成验证码和验证验证码的Controller生成验证码类 生成验证码和验证验证码的Controller package com.example.security.zmain.generateImg; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.a

WXN的博客 1012

动态生成验证码

下面一个实例讲述如何动态生成验证码及验证码是否匹配。显示验证码的html页面login.html代码如下:DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">html>  head>    title>login.htmltitle>        meta http-equiv="keywords" content="

AndyElvis的专栏 2118

Python生成验证码图片及验证用户提交的验证码是否正确

正如日常生活中所见,网站、APP一般都需要用户进行注册登录,获取用户登录信息,登录页面除了需要输入正确的用户名和密码,往往还需要对验证码进行验证,验证码有图片验证码、文字验证码、数字验证码等,触发方式有输入的、移动的、点击的、滑动的层出不穷。只有用户名、密码以及验证码偶都输入正确,才能成功登录。 那如何随机生成不同的验证码图片以及如何验证用户输入的验证码是否正确,具体步骤如下图: 一、流程图: ...

weixin_40547993的博客 4261

验证码生成类(可生成gif动态验证码)

固定验证码生成类:获取验证码图片,获取验证码图片组,用于合成gif动态图,获取gif图片输入流;生成验证码字符串,把多张jpg图片合成一张。

似水流年风萧兮 880

java 生成校验验证码_java生成验证码并进行验证

一实现思路使用BufferedImage用于在内存中存储生成的验证码图片使用Graphics来进行验证码图片的绘制,并将绘制在图片上的验证码存放到session中用于后续验证最后通过ImageIO将生成的图片进行输出通过页面提交的验证码和存放在session中的验证码对比来进行校验二、生成验证码页面通过访问servlet来生成验证码,servlet中的代码如下package org.test;im...

weixin_35143292的博客 1216
上一篇: Thinkphp 实现简单数据分页
下一篇: Thinkphp的<in>、<notin>和<range>标签的使用和异同
Lin_kming
博客等级 码龄10年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值