Home php教程 php手册 PHP制作验证码

PHP制作验证码

Jun 06, 2016 pm 07:47 PM
file php make verify

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 
Copy after login
<span>   2:</span> <span>/*</span>
Copy after login
<span>   3:</span> <span>* file:myvcode.class.php</span>
Copy after login
<span>   4:</span> <span>* 验证码类,类名Vcode</span>
Copy after login
<span>   5:</span> <span>*/</span>
Copy after login
<span>   6:</span> <span>class</span> Vcode
Copy after login
<span>   7:</span> {
Copy after login
<span>   8:</span>     <span>private</span> $width;              <span>/*验证码宽度*/</span>
Copy after login
<span>   9:</span>     <span>private</span> $height;             <span>/*验证码高度*/</span>
Copy after login
<span>  10:</span>     <span>private</span> $codeNum;            <span>/*验证码字符个数*/</span>
Copy after login
<span>  11:</span>     <span>private</span> $checkCode;            <span>/*验证码字符*/</span>
Copy after login
<span>  12:</span>     <span>private</span> $image;                <span>/*验证码资源*/</span>
Copy after login
<span>  13:</span>     <span>private</span> $pixNum;            <span>/*绘制干扰点的个数*/</span>
Copy after login
<span>  14:</span>     <span>private</span> $lineNum;            <span>/*绘制干扰线的条数*/</span>
Copy after login
<span>  15:</span>
Copy after login
<span>  16:</span>     <span>/*</span>
Copy after login
<span>  17:</span> <span>    *构造方法实例化验证码对象,并初始化数据</span>
Copy after login
<span>  18:</span> <span>    *@param int $width         设置默认宽度</span>
Copy after login
<span>  19:</span> <span>    *@param int $height     设置默认高度</span>
Copy after login
<span>  20:</span> <span>    *@param int $codeNum    设置验证码中的字符个数</span>
Copy after login
<span>  21:</span> <span>    *@param int $pixNum        设置干扰点的个数</span>
Copy after login
<span>  22:</span> <span>    *@param int $lineNum    设置干扰线的数量</span>
Copy after login
<span>  23:</span> <span>    */</span>
Copy after login
<span>  24:</span>     <span>function</span> __construct($width=80,$height=40,$codeNum=4,$pixNum=40,$lineNum=5)
Copy after login
<span>  25:</span>     {
Copy after login
<span>  26:</span>         $this->width = $width;
Copy after login
<span>  27:</span>         $this->height = $height;
Copy after login
<span>  28:</span>         $this->codeNum = $codeNum;
Copy after login
<span>  29:</span>         $this->pixNum = $pixNum;
Copy after login
<span>  30:</span>         $this->lineNum = $lineNum;
Copy after login
<span>  31:</span>     }
Copy after login
<span>  32:</span>     <span>/*内部私有方法,创建图像资源*/</span>
Copy after login
<span>  33:</span>     <span>private</span> <span>function</span> getCreateImage()
Copy after login
<span>  34:</span>     {
Copy after login
<span>  35:</span>         $this->image = imagecreatetruecolor($this->width, $this->height);
Copy after login
<span>  36:</span>         $white = imagecolorallocate($this->image,0xff,0xff,0xff);
Copy after login
<span>  37:</span>         imagefill($this->image, 0, 0, $white);
Copy after login
<span>  38:</span>         $black = imagecolorallocate($this->image,0,0,0);
Copy after login
<span>  39:</span>         imagerectangle($this->image, 0, 0, $this->width-1, $this->height-1, $black);
Copy after login
<span>  40:</span>     }
Copy after login
<span>  41:</span>     <span>/*内部私有方法,绘制字符,去掉o0Llz和012*/</span>
Copy after login
<span>  42:</span>     <span>private</span> <span>function</span> createCheckCode()
Copy after login
<span>  43:</span>     {
Copy after login
<span>  44:</span>         $code = <span>'3456789abcdefghijkmnpqrstuvwxyABCDEFGHIJKMNPQRSTUVWXY'</span>;
Copy after login
<span>  45:</span>         $this->checkCode = <span>""</span>;
Copy after login
<span>  46:</span>         <span>for</span>($i=0; $icodeNum;$i++)
Copy after login
<span>  47:</span>         {
Copy after login
<span>  48:</span>             $char = $code{rand(0,strlen($code) - 1)};
Copy after login
<span>  49:</span>             $this->checkCode .= $char;
Copy after login
<span>  50:</span>             $fontColor = imagecolorallocate($this->image, rand(0,128), rand(0,128),rand(0,128));
Copy after login
<span>  51:</span>             $fontSize = rand(3,5);
Copy after login
<span>  52:</span>             $x = rand(0,$this->width-imagefontwidth($fontSize));
Copy after login
<span>  53:</span>             $y = rand(0,$this->height-imagefontheight($fontSize));
Copy after login
<span>  54:</span>             imagechar($this->image, $fontSize, $x, $y, $char, $fontColor);
Copy after login
<span>  55:</span>         }
Copy after login
<span>  56:</span>     }
Copy after login
<span>  57:</span>     <span>/*内部私有方法设置干扰元素*/</span>
Copy after login
<span>  58:</span>     <span>private</span> <span>function</span> setDisturbColor()
Copy after login
<span>  59:</span>     {
Copy after login
<span>  60:</span>         <span>/*绘制干扰点*/</span>
Copy after login
<span>  61:</span>         <span>for</span>($i=0; $ipixNum; $i++)
Copy after login
<span>  62:</span>         {
Copy after login
<span>  63:</span>             $color = imagecolorallocate($this->image, rand(0,255), rand(0,255), rand(0,255));
Copy after login
<span>  64:</span>             imagesetpixel($this->image, rand(1,$this->width-2), rand(1,$this->height-2), $color);
Copy after login
<span>  65:</span>         }
Copy after login
<span>  66:</span>         <span>/*绘制干扰线*/</span>
Copy after login
<span>  67:</span>         <span>for</span>($i=0; $ilineNum; $i++)
Copy after login
<span>  68:</span>         {
Copy after login
<span>  69:</span>             $color = imagecolorallocate($this->image, rand(0,255), rand(0,255), rand(0,255));
Copy after login

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>         }
Copy after login
<span>  72:</span>     }
Copy after login
<span>  73:</span>     <span>/*开启session保存 利用echo 输出图像*/</span>
Copy after login
<span>  74:</span>     <span>function</span> __toString()
Copy after login
<span>  75:</span>     {
Copy after login
<span>  76:</span>         $_SESSION[<span>'code'</span>] = strtoupper($this->checkCode);
Copy after login
<span>  77:</span>         $this->getCreateImage();
Copy after login
<span>  78:</span>         $this->createCheckCode();
Copy after login
<span>  79:</span>         $this->setDisturbColor();
Copy after login
<span>  80:</span>         $this->outputImg();
Copy after login
<span>  81:</span>     }
Copy after login
<span>  82:</span>     <span>/*内部私有方法输出图像*/</span>
Copy after login
<span>  83:</span>     <span>private</span> <span>function</span> outputImg()
Copy after login
<span>  84:</span>     {
Copy after login
<span>  85:</span>         header(<span>"content-type:image/png"</span>);
Copy after login
<span>  86:</span>         imagepng($this->image);
Copy after login
<span>  87:</span>     }
Copy after login
<span>  88:</span>     <span>/*析构方法,释放对象*/</span>
Copy after login
<span>  89:</span>     <span>function</span> __destruct()
Copy after login
<span>  90:</span>     {
Copy after login
<span>  91:</span>         imagedestroy($this->image);
Copy after login
<span>  92:</span>     }
Copy after login
<span>  93:</span> }
Copy after login
<span>  94:</span> ?>
Copy after login
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

CakePHP Working with Database CakePHP Working with Database Sep 10, 2024 pm 05:25 PM

Working with database in CakePHP is very easy. We will understand the CRUD (Create, Read, Update, Delete) operations in this chapter.

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

To work with date and time in cakephp4, we are going to make use of the available FrozenTime class.

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

To work on file upload we are going to use the form helper. Here, is an example for file upload.

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

CakePHP Creating Validators CakePHP Creating Validators Sep 10, 2024 pm 05:26 PM

Validator can be created by adding the following two lines in the controller.

CakePHP Logging CakePHP Logging Sep 10, 2024 pm 05:26 PM

Logging in CakePHP is a very easy task. You just have to use one function. You can log errors, exceptions, user activities, action taken by users, for any background process like cronjob. Logging data in CakePHP is easy. The log() function is provide

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

See all articles