Home > Backend Development > PHP Tutorial > The Art of Programming: Encapsulating a Verification Code Class (php)_PHP Tutorial

The Art of Programming: Encapsulating a Verification Code Class (php)_PHP Tutorial

WBOY
Release: 2016-07-14 10:07:22
Original
839 people have browsed it

Encapsulate a verification code class
validationcode.class.php
class ValidationCode {
private $width;
private $height;
private $codeNum;
private $image; //Image resource
private $disturbColorNum;
private $checkCode;
function __construct($width=80, $height=20, $codeNum=4){
$this->width=$width;
$this->height=$height;
$this->codeNum=$codeNum;
$this->checkCode=$this->createCheckCode();
$number=floor($width*$height/15);

If($number > 240-$codeNum){
$this->disturbColorNum= 240-$codeNum;
}else{
$this->disturbColorNum=$number;
}

}
//Output the image to the browser by accessing this method
function showImage($fontFace=""){
//Step one: Create image background
$this->createImage();
//Step 2: Set up interference elements
$this->setDisturbColor();
//Step 3: Draw random text into the image
$this->outputText($fontFace);
//Step 4: Output image
$this->outputImage();
}

//Get the randomly created verification code string by calling this method
function getCheckCode(){
Return $this->checkCode;
}
private function createImage(){
//Create image resource
$this->image=imagecreatetruecolor($this->width, $this->height);
//Random background color
$backColor=imagecolorallocate($this->image, rand(225, 255), rand(225,255), rand(225, 255));
//Add color to the background
Imagefill($this->image, 0, 0, $backColor);
//Set border color
$border=imagecolorallocate($this->image, 0, 0, 0);
//Draw a rectangular border
Imagerectangle($this->image, 0, 0, $this->width-1, $this->height-1, $border);
}
private function setDisturbColor(){
for($i=0; $i<$this->disturbColorNum; $i++){
$color=imagecolorallocate($this->image, rand(0, 255), rand(0, 255), rand(0, 255));
imagesetpixel($this->image, rand(1, $this->width-2), rand(1, $this->height-2), $color);
}
for($i=0; $i<10; $i++){
$color=imagecolorallocate($this->image, rand(200, 255), rand(200, 255), rand(200, 255));
imagearc($this->image, rand(-10, $this->width), rand(-10, $this->height), rand(30, 300), rand(20, 200), 55 , 44, $color);
}
}
private function createCheckCode(){
$code="23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ";
$string='';
for($i=0; $i < $this->codeNum; $i++){
$char=$code{rand(0, strlen($code)-1)};
$string.=$char;
}
Return $string;
}
private function outputText($fontFace=""){
for($i=0; $i<$this->codeNum; $i++){
$fontcolor=imagecolorallocate($this->image, rand(0, 128), rand(0, 128), rand(0, 128));
If($fontFace==""){
$fontsize=rand(3, 5);
$x=floor($this->width/$this->codeNum)*$i+3;
$y=rand(0, $this->height-15);
Imagechar($this->image,$fontsize, $x, $y, $this->checkCode{$i},$fontcolor);
}else{
$fontsize=rand(12, 16);
$x=floor(($this->width-8)/$this->codeNum)*$i+8;
$y=rand($fontSize+5, $this->height);
Imagettftext($this->image,$fontsize,rand(-30, 30),$x,$y ,$fontcolor, $fontFace, $this->checkCode{$i});
}
}
}
private function outputImage() {
If(imagetypes() & IMG_GIF){
header("Content-Type:image/gif");
Imagepng($this->image);
}else if(imagetypes() & IMG_JPG){
header("Content-Type:image/jpeg");
Imagepng($this->image);
}else if(imagetypes() & IMG_PNG){
header("Content-Type:image/png");
Imagepng($this->image);
}else if(imagetypes() & IMG_WBMP){
header("Content-Type:image/vnd.wap.wbmp");
Imagepng($this->image);
}else{
Die("PHP does not support image creation");
}
}
function __destruct(){
Imagedestroy($this->image);
}
}

Call the verification code class
code.php
session_start();
include "validationcode.class.php";
$code=new ValidationCode(80, 20, 4);
$code->showImage(); //Output to the page for registration or login
$_SESSION["code"]=$code->getCheckCode(); //Save the verification code to the server

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/477878.htmlTechArticleencapsulates a verification code class validationcode.class.php ?php class ValidationCode { private $width; private $height; private $codeNum; private $image; //Image resource private $disturbColo...
source:php.cn
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template