iis开启php验证码,php结合GD库实现中文验证码的简单方法

前言

上一次写了一个常见的验证码,现在玩一下中文的验证码,顺便升级一下写的代码

流程基本差不多

先看GD库开启了没

生成中文5位验证码

开始画图

画干扰素

生成图形

完事

生成中文验证码

//小小心机

$hanzi= "如果觉得写得还可以的话互相关注报团取暖交流经验来自合肥的小码农巴拉啊鹏哦溜要了吗不能把呗日无一人说的回复看介绍请问惹锐欧尼之额心想城型从不错框架铝合金";

//获取中文字符的最大索引号

$c = mb_strlen($hanzi)-1;

//var_dump($c);

for($i = 0;$i < 5;$i++){

//获取起始点

$start = rand(0,$c);

//循环取出一个汉字

$code.= mb_substr($hanzi,$start,1);

}

可以很清晰看到一个中文占3个字节咯,UTF-8编码格式下一个中文字符占3个字节

be409c087aa5934134af0fcecc76b4b5.png

画图!

$img = imagecreate(120,30);

$white = imagecolorallocate($img,255,255,255);

$black = imagecolorallocate($img,0,0,0);

//点干扰素

for ($i = 0;$i< 200;$i++) {

//这里的颜色我就用随机产生的颜色了,之前是给定好了的

imagesetpixel($img,rand(0,120),rand(0,30),imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255)));

}

//线干扰素

for($i = 0;$i<20;$i++){

//这里的颜色我就用随机产生的颜色了,之前是给定好了的

imageline($img,rand(0,120),rand(0,30),rand(0,120),rand(0,30),imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255)));

}

//像素字体大小

$size = 16;

//角度大小

$fontfile = "simhei.ttf";

//获取文本范围,见下方图

$info=imagettfbbox($size,rand(0,5),$fontfile,$code);

//echo '

';

//print_r($info);

$code_w=$info[4]-$info[6];//字符串的宽度

$code_h=$info[1]-$info[7];//字符串的高度

//imagesx($img) image 所代表的图像的宽度

$x=(imagesx($img)-$code_w)/2;//起始点的$x

$y=(imagesy($img)+$code_h)/2;//起始点的$y

//向图像写入文本

imagettftext($img,$size,rand(0,5),$x,$y,imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255)),$fontfile,$code);

//生成图像

imagejpeg($img);

imagedestroy($img);

这里$info这个是一个数组(可以print_r()看一看),数组中的每一项对应的其实是坐标,imagesx( $img ) 就是 image 所代表的图像的宽度,这样我想尽量让汉字保持在图片的居中位置,不然都跑偏了也看不见了

978f6972ba1b0d52a77139f938a19f38.png

生成验证码

09d968d6eff053ea04bf97d9229c0ae3.png

小例子

session_start();

header("content-type:text/html;chartset:utf-8");

echo '

';

var_dump($_SESSION);

var_dump($_POST);

echo '

';

if($_SESSION['code'] == $_POST['code']){

echo '验证成功';

//进行后续操作balabala

}

?>

content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">

Document

3e2b21e54d4c1a2e5922bf60fc805f50.png

总结

到此这篇关于php结合GD库实现中文验证码的简单方法的文章就介绍到这了,更多相关php结合GD库实现中文验证码内容请搜索IIS7站长之家博文以前的文章或继续浏览下面的相关文章希望大家以后多多支持IIS7站长之家博文!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构设计_合并多种疾病,如何设计数据结构?

如果一个患者合并多种疾病或应用多种药物&#xff0c;如何设计数据结构&#xff1f;例如病史&#xff0c;建议设计成多选题。如果未患病&#xff0c;只需点一次“全无”&#xff0c;操作简单。如果选了全无&#xff0c;其他选框系统自动关闭&#xff0c;就不能再后面的选项了&a…

java ee的小程序_用微服务和容器替换旧版Java EE应用程序服务器

java ee的小程序Lightbend最近对2000多个JVM开发人员进行了一项调查&#xff0c;结果刚刚发布。 开展该调查的目的是发现&#xff1a;发展趋势与IT基础架构趋势之间的相关性&#xff0c;处于数字化转型前沿的组织如何使他们的应用程序现代化以及当今对新兴开发人员技术最为关注…

Linux系统下如何安装JDK?

一、首先下载linux版本jdk 点击进入jdk官网 根据自己的需求&#xff0c;下载不同版本的jdk 2.将下载好的jdk压缩包&#xff0c;通过ftp上传到linux系统的当前用户下&#xff0c;我当前登录的用户为root用户 3.将上传后的jdk&#xff0c;解压到/usr/local/目录下&#xff0c…

django settings 定义的变量不存在_使用Django部署机器学习模型(1)

介绍机器学习(ML)应用的需求正在不断增长。许多资料显示了如何训练ML算法。然而&#xff0c;ML算法分为两个阶段:训练阶段——在这个阶段&#xff0c;基于历史数据训练ML算法&#xff0c;推理阶段——ML算法被用于计算对未知结果的新数据的预测。商业利益就处于推理阶段&#x…

php系统函数区分大小写,php函数名区分大小写吗?

PHP对大小写敏感问题的处理比较乱&#xff0c;写代码时可能偶尔出问题&#xff0c;所以下面本篇文章就来总结一下。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。但我不是鼓励大家去用这些规则。推荐大家始终坚持“大小写敏感”&#x…

python条形堆积图_python – 使用DataFrame.plot显示堆积条形图中...

您可以使用plt.text根据数据将信息放在位置. 但是,如果你有非常小的条形,可能需要一些调整才能看起来很完美. df_total df[Total Cost] df df.iloc[:, 0:4] df.plot(x Airport, kindbarh,stacked True, title Breakdown of Costs, mark_right True) df_rel df[df.column…

mega2560单片机开发_[MEGA DEAL] Ultimate Java开发和认证指南(59%折扣)

mega2560单片机开发通过介绍世界上最受欢迎的编程语言之一掌握Java编程概念 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价 。 我们提供的《 Ultimate Java Development and Certification Guide 》 仅售2…

java界面 文件选择器_掌握java技术 必备java工具应用知识

在现如今的互联网时代里&#xff0c;Java无疑是一种极为流行的开发语言&#xff0c;无论是程序界还是整个互联网行业势必带来很大的影响。不管是人才需求还是薪资水平上&#xff0c;Java的发展前景都是很乐观的。关于Java的一些常用的工具&#xff0c;也是需要我们不断去掌握和…

禅道项目管理系统里面的「产品」与「项目」的区别和关系

产品与项目的区别和关系 产品主要是管理需求、计划和发布。一个产品可能分解成多个小项目&#xff0c;由一个或多个项目组去完成。 项目主要是管理任务开发需求。禅道里&#xff0c;项目对应的是敏捷开发里的迭代。项目可以看做产品的迭代管理&#xff0c;一个项目更新产品的…

triplet loss后面不收敛_你的神经网络真的收敛了么?

1、为什么小模型的作为backbone效果会差&#xff1f;在深度学习目标检测(图像分割)领域&#xff0c;我们发现当我们使用层数越深&#xff0c;并且在imagenet上表现越好的分类网络作为backbone时&#xff0c;它的检测和分割效果越好效果越好。比如我们使用resnet101作为backbone…

php文件上传漏洞waf,文件上传绕过WAF

文件上传文件上传实质上还是客户端的POST请求&#xff0c;消息主体是一些上传信息。前端上传页面需要指定enctype为multipart/from-data才能正常上传文件。此处不讲各种中间件解析漏洞只列举集几种safe_dog对脚本文件上传拦截的绕过靶机环境&#xff1a;win2003safe_dog4.0.239…

java性能监视_Java 9和应用程序性能监视的激动人心之处

java性能监视通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用&#xff01; 在当今的现代计算时代&#xff0c;软件创新的不断增强使我们更接近软件革命的时代。 也许在遥远的未来&#xff0c;这可能是对21世纪记忆…

C# 监控字段_有哪些好的C#开源项目推荐?

作者&#xff1a;码云 Gitee链接&#xff1a;https://www.zhihu.com/question/27993498/answer/1014561869

并行流 线程池_使用自定义线程池处理并行数据库流

并行流 线程池并行数据库流 在上一篇文章中 &#xff0c;我写了关于使用并行流和Speedment并行处理数据库内容的文章。 在许多情况下&#xff0c;并行流可能比通常的顺序数据库流快得多。 线程池 Speedment是一个开源的Stream ORM Java工具包和Runtime Java工具&#xff0c;它…

hibernate框架 最新_java框架,使用最频繁的9个程序!

Java在多年的发展历程中&#xff0c;已证明自己是为软件开发而生的顶级通用编程语言。Java 广泛用于科学和教育&#xff0c;金融&#xff0c;法律和政府等许多行业。Java 是开源和面向对象的&#xff0c;其开发目的是使应用程序开发人员可以编写一次然后在任何地方运行。编译后…

twilio_15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理

twilio建筑物身份管理&#xff0c;包括身份验证和授权&#xff1f; 尝试Stormpath&#xff01; 我们的REST API和强大的Java SDK支持可以消除您的安全风险&#xff0c;并且可以在几分钟内实现。 注册 &#xff0c;再也不会建立auth了&#xff01; 今天&#xff0c;不到30秒左右…

unity webgl读写txt文件_python Files文件读写操作

今天学习python的Files文件读写操作&#xff0c;并记录学习过程欢迎大家一起交流分享。首先新建一个文本文件test.txt&#xff0c;内容如下:hello worldhello youhello mehello pythonhello universe然后新建一个python文件命名为py3_file.py&#xff0c;在这个文件中进行操作代…

垃圾收集 java_Java的内置垃圾收集如何使您的生活更美好(大部分时间)

垃圾收集 java通过从您的应用程序学习企业APM产品&#xff0c;发现更快&#xff0c;更有效的性能监控。 参加AppDynamics APM导览&#xff01; “无需为用户编写将寄存器返回到自由存储列表的程序。” 这条线&#xff08;以及随后的十几条线&#xff09;被埋在约翰麦卡锡&…

python函数的使用方法_百度资讯搜索_python函数的使用方法

金生水起程序猿 2020年11月22日 11:23函数语法格式及调用参数:默认值、元组和字典可变参数的使用全局变量和局部变量作用域,局部变量如何升级为全局变量函数是可重复使用的,实现单一功能的代码块。可以把项...百度快照金生水起程序猿 2020年11月22日 12:13函数类型定义:python中…

red hat 4.1.2_安装Red Hat Container Development Kit 2.2版本

red hat 4.1.2当应用程序开发人员或架构师负责探索容器化应用程序提供的可能性时&#xff0c;没有比“红帽容器开发套件”&#xff08;CDK&#xff09;容易的了。 Red Hat CDK具有本地OSX&#xff0c;Linux或Windows环境所需的所有Cloud工具&#xff0c;并且已预先配置了一些容…