Class sharing of PHP verification code generated by individuals
- 2021-07-13 04:46:08
- OfStack
This verification code class can be used directly, and you can also refer to it!
Where the class member codestr is the generated verification code string:
<?php
/**
* Verification code
*/
class Code{
// 1. Define individual members There are width, height, canvas, number of words, type and painting type
private $width; // Width
private $height; // Height
private $num; // Verification code words
private $imgType; // Generate picture type
private $Type; // String type 1,2,3 3 Options 1 Pure number 2 Pure lowercase letters 3 Mix of upper and lower case numbers
private $hb; // Canvas
public $codestr; // Verification code string
public function __construct($height=20,$num=4,$imgType="jpeg",$Type=1){
$this->width = $num*20;
$this->height = $height;
$this->num = $num;
$this->imgType = $imgType;
$this->Type = $Type;
$this->codestr = $this->codestr();
$this->zuhe();
}
// 2. Define a random string fetch function
private function codestr(){
switch($this->Type){
case 1: // Type is 1 Get 1-9 Random number
$str = implode("",array_rand(range(0,9),$this->num));
break;
case 2: // Type is 2 Get a-z Random lowercase letters
$str = implode("",array_rand(array_flip(range(a,z)),$this->num));
break;
case 3: // Type is 3 Get a number , Lowercase letter , Capital letters Mixing
for($i=0;$i<$this->num;$i++){
$m = rand(0,2);
switch($m){
case 0:
$o = rand(48,57);
break;
case 1:
$o = rand(65,90);
break;
case 2:
$o = rand(97,122);
break;
}
$str .= sprintf("%c",$o);
}
break;
}
return $str;
}
// 3. Initialize canvas image resources
private function Hb(){
$this->hb = imagecreatetruecolor($this->width,$this->height);
}
// 4. Generate background color
private function Bg(){
return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250));
}
// 5. Generate font color
private function Font(){
return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));
}
// 6. Fill the background color
private function BgColor(){
imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg());
}
// 7. Interference point
private function ganrao(){
$sum=floor(($this->width)*($this->height)/3);
for($i=0;$i<$sum;$i++){
imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg());
}
}
// 8. Random line Arc
private function huxian(){
for($i=0;$i<$this->num;$i++){
imageArc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->Bg());
}
}
// 9. Writing
private function xiezi(){
for($i=0;$i<$this->num;$i++){
$x=ceil($this->width/$this->num)*$i;
$y=rand(1,$this->height-15);
imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->Font());
}
}
// 10. Output
private function OutImg(){
$shuchu="image".$this->imgType;
$header="Content-type:image/".$this->imgType;
if(function_exists($shuchu)){
header($header);
$shuchu($this->hb);
}else{
exit("GD Library does not have such an image ");
}
}
// 11. Assemble
private function zuhe(){
$this->Hb();
$this->BgColor();
$this->ganrao();
$this->huxian();
$this->xiezi();
$this->OutImg();
}
public function getCodeStr(){
return $this->codestr;
}
}
?>