学习使用php实现汉字验证码

学习使用php实现汉字验证码

<?php
//开启session ,方便验证
session_start();
//创建背景画布
$image = imagecreatetruecolor(200, 60);
$background = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $background);//创建背景画布
for ($i = 0; $i < 300; $i++) {$pixColor = imagecolorallocate($image, rand(150, 240), rand(150, 240), rand(150, 240));$pixX = rand(10, 190);$pixY = rand(5, 55);imagesetpixel($image, $pixX, $pixY, $pixColor);
}//4条水平线
for ($i = 0; $i < 5; $i++) {$lineColor = imagecolorallocate($image, rand(50, 150), rand(50, 150), rand(50, 150));$lineX1 = 0;$lineX2 = 300;$lineY1 = ($i + 1) * 12;$lineY2 = ($i + 1) * 12;imageline($image, $lineX1, $lineY1, $lineX2, $lineY2, $lineColor);
}
//10条垂直线
for ($i = 0; $i < 30; $i++) {$lineColor = imagecolorallocate($image, rand(50, 150), rand(50, 150), rand(50, 150));$lineX1 = ($i + 1) * 10;$lineX2 = ($i + 1) * 10;$lineY1 = 0;$lineY2 = 60;imageline($image, $lineX1, $lineY1, $lineX2, $lineY2, $lineColor);
}//汉字库
$text_str = '君|不|见|黄|河|之|水|天|上|来|奔|流|到|海|不|复|回|君|不|见|高|堂|明|镜|悲|白|发|朝|如|青|丝|暮|成|雪|人|生|得|意|须|尽|欢|莫|使|金|樽|空|对|月|天|生|我|材|必|有|用|千|金|散|尽|还|复|来|烹|羊|宰|牛|且|为|乐|会|须|一|饮|三|百|杯|岑|夫|子|丹|丘|生|将|进|酒|杯|莫|停|与|君|歌|一|曲|请|君|为|我|倾|耳|听|钟|鼓|馔|玉|不|足|贵|但|愿|长|醉|不|愿|醒|古|来|圣|贤|皆|寂|寞|惟|有|饮|者|留|其|名|陈|王|昔|时|宴|平|乐|斗|酒|十|千|恣|欢|谑|主|人|何|为|言|少|钱|径|须|沽|取|对|君|酌|五|花|马|千|金|裘|呼|儿|将|出|换|美|酒|与|尔|同|销|万|古|愁';$text = explode('|', $text_str);$text_count = bcsub(count($text), 1);//创建背景画布
$text_new = '';
for ($i = 0; $i < 4; $i++) {$textColor = imagecolorallocate($image, rand(20, 100), rand(20, 100), rand(20, 100));$textX = $i * 50 + 10;$textY = rand(40, 60);//随机生成数字$rand_i = rand(0, $text_count);$text_new .= $text[$rand_i];imagettftext($image, 30, rand(20, 50), $textX, $textY, $textColor, "simhei.ttf", $text[$rand_i]);
}
//存入session
$_SESSION['text_new'] = $text_new;header("Content-Type:image/png");
imagepng($image);?>

效果图
在这里插入图片描述

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

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

相关文章

通付盾WAAP网络与数据安全Agent深度解析

引言&#xff1a; ​随着现代Web应用程序的发展、应用程序环境和威胁的代际转变&#xff0c;应用的去中心化和分布式趋势明显&#xff0c;Bot和自动攻击的日益复杂化&#xff0c;移动应用使用量的增加和现代应用开发带来的API端点的激增&#xff0c;极大地扩展了威胁面&#x…

「图像 cv2.seamlessClone」无中生有制造数据

上一篇博客【「图像 merge」无中生有制造数据 】写的是图片直接融合&#xff0c;此方法生成的图片相对而言比较生硬&#xff0c;虽然目标图片已经透明化处理过了&#xff0c;但是生成的图片依旧很假 除了上述上述的图片叠加融合之外&#xff0c;还有一种更加自然的融合方法&…

智安网络|数据库设计与规范:构建高效可靠的数据存储系统

在信息化时代&#xff0c;数据库设计与规范是构建高效可靠的数据存储系统的关键。一个合理的数据库设计可以提高数据的存储效率、保证数据的一致性和完整性&#xff0c;提供高效的数据查询和处理能力。 一、数据库设计的基本原则 数据库范式&#xff1a;数据库设计应符合范式的…

基于OR-Tools的装箱问题模型求解(PythonAPI)

装箱问题 一、背包问题&#xff08;Knapsack problem&#xff09;1.1 0-1背包模型基于OR-Tools的0-1背包问题求解&#xff08;PythonAPI&#xff09;导入pywraplp库数据准备声明MIP求解器初始化决策变量初始化约束条件目标函数调用求解器打印结果 1.2 多重背包问题&#xff08;…

代码随想录第四十一天 | 动态规划:整数拆分(343,加贪心);不同的二叉搜索树(96)

1、leetcode 343&#xff1a;整数拆分 1.1 leetcode 343&#xff1a;动态规划 第一遍代码没思路 代码随想录思路 看到这道题目&#xff0c;都会想拆成两个呢&#xff0c;还是三个呢&#xff0c;还是四个… 我们来看一下如何使用动规来解决 动规五部曲&#xff0c;分析如下&…

不是我吹牛逼,这绝对是去掉 if...else 最佳的文章

我相信小伙伴一定看过多篇怎么去掉 if…else 的文章&#xff0c;也知道大家都很有心得&#xff0c;知道多种方法来去掉 if…else &#xff0c;比如 Option&#xff0c;策略模式等等&#xff0c;但我相信大明哥这篇文章绝对是最全&#xff0c;最完备怎么去掉 if…else 的文章&am…

【Linux学习笔记】进程概念(中)

1. 操作系统的进程状态2. Linux操作系统的进程状态3. 僵尸进程4. 孤儿进程5. 进程优先级5.1. 优先级是什么和为什么要有优先级5.2. Linux中的进程优先级 6. 进程切换7. 环境变量7.1. 环境变量的认识7.2. 环境变量相关的命令7.3. 环境变量和本地变量7.4. 命令行参数7.5. 获取环境…

JVM 分代垃圾回收过程

堆空间划分了代&#xff1a; 年轻代&#xff08;Young Generation&#xff09;分为 eden 和 Survivor 两个区&#xff0c;Survivor 又分为2个均等的区&#xff0c;S0 和 S1。 首先&#xff0c;新对象都分配到年轻代的 eden 空间&#xff0c;Survivor 刚开始是空的。 当 eden …

IDEA新建maven项目,使用mybatis操作数据库完整过程

IDEA新建maven项目&#xff0c;使用mybatis操作数据库完整过程 一、IDEA新建maven项目二、配置mybatis三、创建表对应实体类四、创建mapper接口五、使用mybatis操作数据库 前提&#xff1a; 这个教程是在maven项目中使用mybatis进行数据库操作&#xff0c;不是在spring boot项目…

精准测试:提高软件质量和用户满意度的利器

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

目标检测:Proposal-Contrastive Pretraining for Object Detection from Fewer Data

论文作者&#xff1a;Quentin Bouniot,Romaric Audigier,Anglique Loesch,Amaury Habrard 作者单位&#xff1a;Universit Paris-Saclay; Universit Jean Monnet Saint-Etienne; Universitaire de France (IUF) 论文链接&#xff1a;http://arxiv.org/abs/2310.16835v1 内容…

用rust写web服务器笔记(11/1)

文章目录 一、创建一个具有监听链接功能web服务器二、读取请求内容三、编写web服务器返回网页(编写响应)四、编写web服务器有条件的返回网页五、编写多线程的web服务器六、用线程池实现web服务器七、实现线程池清除的web服务器八、读取文件 rust官网文档地址&#xff1a;https:…