中科数创 php,PHP生成验证码 - 低调是最牛逼的炫耀 - OSCHINA - 中文开源技术交流社区...

article/2025/4/20 23:46:55

PHP提供了一系列函数来实现在网站编程中对图像进行编辑。PHP的图像处理函数都封装在一个函数库中,这就是GD库。GD库用于处理图像,它是一个开放源码的动态创建图像的函数库,可以创建和操作多种不同格式的图像文件,并可以直接以图像流将图像输出到浏览器。

GD库在很多需要动态生成图像、自动批量处理图像等方面,能给PHP网站开发者带来巨大帮助,如:将用户上传到服务器的相片生成缩略图以供预览;为防止恶意攻击等而使用的验证码图片;给自己的图片加入版权信息等水印。以及数据统计中饼状图、柱形图和折线图等。

一、创建画布及常用颜色

1.1 创建画布

$num  = 4;

$imgW = 102;                                 // 画布宽度

$imgH =40;                                   // 画布高度

$img  = imagecreatetruecolor($imgW,$imgH);   // 创建画布

1.2 常用颜色

$white = imagecolorallocate($img, 255, 255, 255);      // 白色

$gray  = imagecolorallocate($img, 228, 228, 228);      // 灰色

// 我们将一系列颜色存入$color[]数组里

$color[] = imagecolorallocate($img, 255, 0,   0  );    // $red

$color[] = imagecolorallocate($img, 190, 8,   10 );    // $red--

$color[] = imagecolorallocate($img, 243, 97,  97 );    // $red--

$color[] = imagecolorallocate($img, 94,  153, 11 );    // $green

$color[] = imagecolorallocate($img, 124, 145, 0  );    // $grass

$color[] = imagecolorallocate($img, 107, 193, 70 );    // $gree--

$color[] = imagecolorallocate($img, 83,  104, 189);    // blue

二、填充画布及创建边框

imagefill($img, 0, 0, $white);                         // 用$white填充画布

imagerectangle($img, 0, 0, $imgW-1, $imgH-1, $gray);   // 创建一个$gray边框

三、添加验证码内容

3.1 引入字体

// 这里我们将字体文件存入一个数组,方便以后随机调用

$fonts[] = "msyh.ttf";

$fonts[] = "ninefeetunder.ttf";

$fonts[] = "bubblesoap.ttf";

$fonts[] = "DPStick.ttf";

3.2 验证码内容

$verifyText = getVerifyCode($num,2);

/**

* 生成验证码内容函数

* @Parameter $num,默认为4,即创建4个字符的验证码

* @Parameter $type,默认为0,即创建验证码类型为纯数字

*/

function getVerifyCode($num=4,$type=0){

$showStr = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

$opNum = array(9,35,strlen($showStr)-1);

$str = "";

for ($i=0; $i 

$str .= $showStr[rand(0,$opNum[$type])];

}

return $str;

}

3.3 生成验证码内容

$textColor = $color[rand(0,count($color)-1)];     // 随机显示文字字体颜色

$fontsType = $fonts[rand(0,count($fonts)-1)];     // 随机显示文字字体类型

for ($i=0; $i 

imagettftext(

$img,              //

28,                // 字体大小

rand(-20,20),      // 文字旋转角度

4+($i*23),         // 依次将文字内容遍历显示,x轴

rand(32,34),       // 文字内容y轴显示位置

$textColor,        // 文字字体颜色

$fontsType,        // 文字字体类型

$verifyText[$i]    // 文字内容

);

}

3.4 随机添加干扰点

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

$dot = imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));    //随机一个颜色

imagesetpixel($img,rand(1,$imgW-2),rand(1,$imgH-2),$dot);

}

3.5 随机添加干扰线

$linkColor = $color[rand(0,count($color)-1)];     // 随机获取颜色

for($i=0;$i<2;$i++){                              // 随机生成两条干扰线

imageline($img,rand(0,$imgW),rand(0,$imgH),rand(0,$imgW),rand(0,$imgH),$linkColor);

}

四、输出验证码

header("Content-type: image/png");

imagepng($img);

imagedestroy($img);

五、效果展示

3516144db399919c7ae6bb494c450498.png

d5a21b5d1b19a4c29154e344fea2e8a5.png

e0c43edcfe47580902d0d698ca170969.png

5ea7449bca8b724ccacc3727348acbb7.png

六、帮助文档

6.1 imagecreatetruecolor() -- 新建一个真彩色图像

6.2 imagecolorallocate() -- 为一幅图像分配颜色

6.3 imagefill() -- 区域填充

6.4 imagerectangle() -- 画一个矩形

6.5 imagettftext() -- 用 TrueType 字体向图像写入文本

6.6 imagesetpixel() -- 画一个单一像素

6.7 imageline() -- 画一条线段

6.8 imagepng()

6.9 imagedestroy() -- 销毁一图像


http://chatgpt.dhexx.cn/article/JaEoLn9v.shtml

相关文章

1+X Web前端等级考证 | PHP 技术与应用(中级重点)

文章目录 动态网站动态网站开发所需构件PHP技术基础php 的诞生php 的优点php 的缺点 开发环境php 语言基础文件命名语言标记注释符与结束符常用命令和系统函数变量与常量常量变量变量与常量的差异 数据类型数据类型转换字符串数组数组转JSON 运算符流程控制流程分支 循环结构wh…

在直播卖货系统中,分销和代销是什么意思?

就在前几天&#xff0c;艾瑞咨询发布了《2020年中国直播电商生态研究报告》&#xff0c;报告中指出&#xff0c;19年至今&#xff0c;直播电商整体成交额达4512.9亿元&#xff0c;同比增长200.4%&#xff0c;占网购整体规模的4.5%&#xff0c;成长空间较大&#xff0c;预计未来…

社交零售多商户分销商城APP小程序系统

多种业务场景模式 自由灵活切换 新零售时代主流多用户商城&#xff0c;满足多种用户形态多样业务场景&#xff0c;解决线上的引流&#xff0c;推广难题&#xff01; 自营模式 1.平台建立自营线上商城&#xff0c;整合自身多渠道业务&#xff0c;通过会员、商品、订单、财务等…

微信小程序、APP分销商城开发:分销功能模块设计

前面我们讲了微信小程序商城基础营销功能&#xff1a;微信小程序商城、APP商城开发营销活动功能策划&#xff08;拼团、砍价、秒杀、直播、优惠券等&#xff09; 今天讲的分销系统更是强大的营销功能&#xff0c;它应该如何设计呢&#xff1f;我们的系统经过一点一点更改更新&…

人人商城源码怎么安装MySQL_人人商城12个常见错误解决方案

人人商城12个常见错误解决方案 微信小程序报错request:fail url not in domain list 有两个原因第一个是报错提示说请求的url不在域名列表里&#xff0c;应该是还没有配置服务器域名&#xff0c;可点击开发者工具右上角 详情-域名信息&#xff0c;看看是否配置了域名&#xff1…

三级分销商城  避坑避雷指南

三级分销自出现以来就引发社会各界的关注&#xff0c;这种病毒式的传播方式产生的盈利效果&#xff0c;让许多商家都蠢蠢欲动&#xff0c;相比于这种模式的风险性&#xff0c;如何去赚钱才是商家最关心的事情&#xff0c;基于三级分销模式研发的三级分销商城也成为企业发展线上…

小程序分销平台商城开发系统

小程序分销平台商城开发系统找何经理。小程序分销商城、小程序分销系统平台等。从更广阔的视角来说,目前移动互联正在给我们的世界带来新的沟通、学习、工作、生活方式,并将引领未来的潮流。不再是单纯的电子渠道建设、业务线上迁移与技术改造升级,而是一场使企业产品创新、…

三级分销系统哪家好

众所周知&#xff0c;如今许多年轻人都纷纷挤进创业这个行列&#xff0c;使得各行各业的商业市场竞争日趋激烈。在这个问题面前&#xff0c;企业如何最大程度的做好营销推广&#xff0c;使销售业绩达到最高值呢&#xff1f;当然&#xff0c;我们不得不承认互联网是最有效果的渠…

PHP商城源码分销奖励/绑定关系设计

来客推PHP分销商城源码是通过互联网将供应商与经销商有机地联系在一起&#xff0c;打造多层级的分销成交平台。 通过分享、邀请等方式绑定上下级关系&#xff0c;把会员和消费者变成分销商&#xff0c;让分销商宣传售卖商品。 分销商获得佣金和奖励&#xff0c;而供货商得到低成…

CRMEB v3.1分销设计思路

1、CRMEB分销模式有几种&#xff0c;有什么区别&#xff1f; 两种分销模式&#xff0c;指定分销和人人分销&#xff1b;指定分销&#xff1a;用户默认无分销权限&#xff0c;需要后台开通分销权限后&#xff0c;才可以推广下级获得返佣&#xff1b;人人分销&#xff1a;用户默…

人人商城小程序消息服务器配置,微擎系统人人商城小程序前端配置教程

人人商城是目前微信商城系统里面用的最多的程序&#xff0c;它功能强大&#xff0c;支持多商户入驻、分销功能、拼团活动、秒杀活动、直播购物功能等。现在更是支持了微信小程序功能&#xff0c;那么人人小程序是如何安装的呢。 首先你得准备认证服务号、服务器、备案域名。人人…

直播教育平台源码中的人人分销是什么?如何实现?

根据艾瑞咨询发布的《2020年H1中国教育行业广告主营销策略研究报告》显示&#xff0c;近段时间&#xff0c;在线教育的市场投放成本节节高升。对于刚刚崛起的在线教育来说&#xff0c;如何低成本获客就成为了一个非常重要的问题。其中&#xff0c;在直播教育平台源码中加入人人…

免费分销工具—运营指南分销系统

免费分销工具—运营指南分销系统 疫情之下,无人出门到陆续复工,餐饮、教培、旅游等实体行业行业到店消费人数并未猛然上涨,所谓的“报复性消费”仍未到来,实体行业店面收入远远低于成本,经营极度困难。 在这种困境下,如何增加订单,获取更多顾客,实现逆势增长? 01 …

公排系统php,全球公排自动滑落二二复制多级分销系统PHP二二复制多级分销源码...

菜鸟源码网分享全球公排自动滑落二二复制多级分销系统PHP二二复制多级分销源码&#xff0c;站长测试源码安装和后台登陆功能设置保存正常&#xff0c;用户端注册登录购买商品正常&#xff0c;商户端登陆添加商品等正常。PHP全球公排自动滑落 二二复制 九九复制带加权分红系统&a…

火遍全网的全民分销系统,你了解多少?

随着互联网的发展&#xff0c;用户流量也逐渐壮大&#xff0c;对于企业来说&#xff0c;平台发展需要流量&#xff0c;怎么样获取流量一个重点问题&#xff0c;随着电商的深入发展&#xff0c;人们探索出各种更深层次挖掘流量的办法&#xff0c;全民分销系统就是其中一种&#…

公排系统php,全球公排自动滑落二二复制多级分销系统 PHP源码

详细制度讲解 1、分销与公排并行1&#xff0d;9级自定义设置分销层级 2&#xff0d;9级自定义递增排位公排&#xff1a;二二复制、三三复制………九九复制 2、威 信分销的状态可以开启或关闭&#xff0c;由您说了算(关闭分销后将不再启用分销和公排) 公排的状态可以开启或关闭(…

php商城开发人人分销团队级差分红升级规则订制

注&#xff1a;所有内容可定制开发&#xff0c;可单独模块更新&#xff0c;联系QQ:1002424826&#xff0c;微信&#xff1a;php510666 使用须知 1.如果您已经在使用本系统&#xff0c;即表示您已经同意以下免责声明条款&#xff0c;否则请立即停止使用本系统。 2.使用方在使用…

线上连锁线下整合的连锁电商架构 打造店店互推人人分销模式

传统的连锁店需要上线电商平台&#xff0c;这是一个十分困难的事情&#xff0c;因为原来的门店会觉得上线的电商会损害原来的利益&#xff0c;加上不少门店没有任何线上运营的基础&#xff0c;对线上网店十分排斥。核货宝小编认为&#xff0c;如何将线下连锁与线上业务打通&…

CRMEB 单商户系统,配置人人分销之后,在分销员管理列表中不显示推广员

开源链接&#xff1a;点击获取开源代码 CRMEB 单商户系统&#xff0c;配置人人分销之后&#xff0c;在分销员管理列表中不显示推广员的问题。 修复办法&#xff1a; 在app/services/user/UserService.php中修改下方代码&#xff0c;将红色代码改为绿色代码 getAgentUserList…

人人商城(分销版)1.11.7微擎原版,提示“抱歉,您无权进行该操作,请先登录!”只因为一个字母,我苦找了9个多小时。

人人商城(分销版)1.11.7微擎原版&#xff0c;提示“抱歉&#xff0c;您无权进行该操作&#xff0c;请先登录&#xff01;” 话说&#xff0c;当时这个项目迁移服务器&#xff0c;我把项目迁移到一台windows 服务器后&#xff0c;用IIS部署。 前负责人只给了一个提示“需要SSL”…