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 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다
