Home  >  Article  >  Backend Development  >  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
WBOYOriginal
2016-07-14 10:07:22787browse

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...
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