PHP制作验证码
1: ?php 2: /* 3: * file:myvcode.class.php 4: * 验证码类,类名Vcode 5: */ 6: class Vcode 7: { 8: private $width; /*验证码宽度*/ 9: private $height; /*验证码高度*/ 10: private $codeNum; /*验证码字符个数*/ 11: private $checkCode; /*验证码字符*
<span> 1:</span> <?php
<span> 2:</span> <span>/*</span>
<span> 3:</span> <span>* file:myvcode.class.php</span>
<span> 4:</span> <span>* 验证码类,类名Vcode</span>
<span> 5:</span> <span>*/</span>
<span> 6:</span> <span>class</span> Vcode
<span> 7:</span> {
<span> 8:</span> <span>private</span> $width; <span>/*验证码宽度*/</span>
<span> 9:</span> <span>private</span> $height; <span>/*验证码高度*/</span>
<span> 10:</span> <span>private</span> $codeNum; <span>/*验证码字符个数*/</span>
<span> 11:</span> <span>private</span> $checkCode; <span>/*验证码字符*/</span>
<span> 12:</span> <span>private</span> $image; <span>/*验证码资源*/</span>
<span> 13:</span> <span>private</span> $pixNum; <span>/*绘制干扰点的个数*/</span>
<span> 14:</span> <span>private</span> $lineNum; <span>/*绘制干扰线的条数*/</span>
<span> 15:</span>
<span> 16:</span> <span>/*</span>
<span> 17:</span> <span> *构造方法实例化验证码对象,并初始化数据</span>
<span> 18:</span> <span> *@param int $width 设置默认宽度</span>
<span> 19:</span> <span> *@param int $height 设置默认高度</span>
<span> 20:</span> <span> *@param int $codeNum 设置验证码中的字符个数</span>
<span> 21:</span> <span> *@param int $pixNum 设置干扰点的个数</span>
<span> 22:</span> <span> *@param int $lineNum 设置干扰线的数量</span>
<span> 23:</span> <span> */</span>
<span> 24:</span> <span>function</span> __construct($width=80,$height=40,$codeNum=4,$pixNum=40,$lineNum=5)
<span> 25:</span> {
<span> 26:</span> $this->width = $width;
<span> 27:</span> $this->height = $height;
<span> 28:</span> $this->codeNum = $codeNum;
<span> 29:</span> $this->pixNum = $pixNum;
<span> 30:</span> $this->lineNum = $lineNum;
<span> 31:</span> }
<span> 32:</span> <span>/*内部私有方法,创建图像资源*/</span>
<span> 33:</span> <span>private</span> <span>function</span> getCreateImage()
<span> 34:</span> {
<span> 35:</span> $this->image = imagecreatetruecolor($this->width, $this->height);
<span> 36:</span> $white = imagecolorallocate($this->image,0xff,0xff,0xff);
<span> 37:</span> imagefill($this->image, 0, 0, $white);
<span> 38:</span> $black = imagecolorallocate($this->image,0,0,0);
<span> 39:</span> imagerectangle($this->image, 0, 0, $this->width-1, $this->height-1, $black);
<span> 40:</span> }
<span> 41:</span> <span>/*内部私有方法,绘制字符,去掉o0Llz和012*/</span>
<span> 42:</span> <span>private</span> <span>function</span> createCheckCode()
<span> 43:</span> {
<span> 44:</span> $code = <span>'3456789abcdefghijkmnpqrstuvwxyABCDEFGHIJKMNPQRSTUVWXY'</span>;
<span> 45:</span> $this->checkCode = <span>""</span>;
<span> 46:</span> <span>for</span>($i=0; $icodeNum;$i++)
<span> 47:</span> {
<span> 48:</span> $char = $code{rand(0,strlen($code) - 1)};
<span> 49:</span> $this->checkCode .= $char;
<span> 50:</span> $fontColor = imagecolorallocate($this->image, rand(0,128), rand(0,128),rand(0,128));
<span> 51:</span> $fontSize = rand(3,5);
<span> 52:</span> $x = rand(0,$this->width-imagefontwidth($fontSize));
<span> 53:</span> $y = rand(0,$this->height-imagefontheight($fontSize));
<span> 54:</span> imagechar($this->image, $fontSize, $x, $y, $char, $fontColor);
<span> 55:</span> }
<span> 56:</span> }
<span> 57:</span> <span>/*内部私有方法设置干扰元素*/</span>
<span> 58:</span> <span>private</span> <span>function</span> setDisturbColor()
<span> 59:</span> {
<span> 60:</span> <span>/*绘制干扰点*/</span>
<span> 61:</span> <span>for</span>($i=0; $ipixNum; $i++)
<span> 62:</span> {
<span> 63:</span> $color = imagecolorallocate($this->image, rand(0,255), rand(0,255), rand(0,255));
<span> 64:</span> imagesetpixel($this->image, rand(1,$this->width-2), rand(1,$this->height-2), $color);
<span> 65:</span> }
<span> 66:</span> <span>/*绘制干扰线*/</span>
<span> 67:</span> <span>for</span>($i=0; $ilineNum; $i++)
<span> 68:</span> {
<span> 69:</span> $color = imagecolorallocate($this->image, rand(0,255), rand(0,255), rand(0,255));
70: imageline($this->image, rand(1,$this->width / 2), rand(1,$this->height / 2),
rand($this->width / 2,$this->width – 2), rand($this->height / 2,$this->height – 2), $color);
<span> 71:</span> }
<span> 72:</span> }
<span> 73:</span> <span>/*开启session保存 利用echo 输出图像*/</span>
<span> 74:</span> <span>function</span> __toString()
<span> 75:</span> {
<span> 76:</span> $_SESSION[<span>'code'</span>] = strtoupper($this->checkCode);
<span> 77:</span> $this->getCreateImage();
<span> 78:</span> $this->createCheckCode();
<span> 79:</span> $this->setDisturbColor();
<span> 80:</span> $this->outputImg();
<span> 81:</span> }
<span> 82:</span> <span>/*内部私有方法输出图像*/</span>
<span> 83:</span> <span>private</span> <span>function</span> outputImg()
<span> 84:</span> {
<span> 85:</span> header(<span>"content-type:image/png"</span>);
<span> 86:</span> imagepng($this->image);
<span> 87:</span> }
<span> 88:</span> <span>/*析构方法,释放对象*/</span>
<span> 89:</span> <span>function</span> __destruct()
<span> 90:</span> {
<span> 91:</span> imagedestroy($this->image);
<span> 92:</span> }
<span> 93:</span> }
<span> 94:</span> ?>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 是一个开源MVC 框架。它使开发、部署和维护应用程序变得更加容易。 CakePHP 有许多库可以减少大多数常见任务的过载。

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元
