Home  >  Article  >  Backend Development  >  Detailed explanation of encapsulated verification code class implemented in PHP_PHP tutorial

Detailed explanation of encapsulated verification code class implemented in PHP_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:05:58894browse

Write a verification code class in PHP and encapsulate it.
Class name: validationcode.class.php
The code is as follows:

Copy the codeThe code is as follows:

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 two: Set interference elements
$this->setDisturbColor();
//Step 3: Draw random text into the image
$this->outputText($fontFace);
//Step 4: Output the image
$this->outputImage() ;
}

//Get a 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 the 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(){
//The main purpose of generating random codes here is to distinguish 1 from l
$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);
}
}


Use as follows:
Test, call the verification code class
code.php
Copy code Code As follows:

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 In the server

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/327651.htmlTechArticleWrite a verification code class in PHP and encapsulate it. Class name: validationcode.class.php The code is as follows: Copy the code The code is as follows: ?php class ValidationCode { private $width; private $...
Statement:
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