Home  >  Article  >  Backend Development  >  Complete code of PHP verification code generation class_PHP tutorial

Complete code of PHP verification code generation class_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:12:05911browse

This article provides this PHP verification code generation class that is flexible and easy to use. Users can define each member to have width, height, canvas, number of words, type, and painting type. At the same time, we only need to modify $Type to define that the generated ones are pure numbers and pure lowercase letters. , mixed uppercase and lowercase numbers, friends in need can refer to it.

The code is as follows
 代码如下 复制代码

class Code{

// 1. 定义各个成员 有宽、高、画布、字数、类型、画类型

private $width; //宽度
private $height; //高度
private $num; //验证码字数
private $imgType; //生成图片类型
private $Type; //字串类型 1,2,3 三个选项 1 纯数字 2 纯小写字母 3 大小写数字混合
private $hb; //画布
public $codestr; // 验证码字串

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. 定义随机获取字符串函数
private function codestr(){
switch($this->Type){

case 1: // 类型为1 获取1-9随机数
$str = implode("",array_rand(range(0,9),$this->num));
break;
case 2: // 类型为2 获取a-z随机小写字母
$str = implode("",array_rand(array_flip(range(a,z)),$this->num));
break;
case 3: // 类型为3 获取数字,小写字母,大写字母 混合
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. 初始化画布图像资源
private function Hb(){
$this->hb = imagecreatetruecolor($this->width,$this->height);
}

// 4. 生成背景颜色
private function Bg(){
return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250));
}

// 5. 生成字体颜色
private function Font(){
return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));
}

// 6. 填充背景颜色
private function BgColor(){
imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg());
}

// 7. 干扰点
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. 随机直线 弧线
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. 写字
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. 输出
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库没有此类图像");
}
}

// 11. 拼装
private function zuhe(){
$this->Hb();
$this->BgColor();
$this->ganrao();
$this->huxian();
$this->xiezi();
$this->OutImg();
}

public function getCodeStr(){
return $this->codestr;
}
}
?>

Copy code
class Code{

<🎜>// 1. Define each member to include width, height, canvas, number of words, type, and painting type

<🎜>private $width; //Width
private $height; //Height
private $num; //Number of verification code words
private $imgType; //Generate image type
private $Type ; //String type 1, 2, 3 three options 1 Pure numbers 2 Pure lowercase letters 3 Mixed uppercase and lowercase numbers
private $hb; //Canvas
public $codestr; // Verification code word 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 function
private function codestr(){
switch($this->Type){case 1: // The type is 1 Get random numbers 1-9
$str = implode("",array_rand(range(0,9),$this->num));
break;
case 2: //Type 2 gets a-z random lowercase letters
$str = implode("",array_rand(array_flip(range(a,z)),$this->num));
break;case 3: // Type 3 gets mixed numbers, lowercase letters, and uppercase letters
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 the canvas image resource
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 Background color
private function BgColor(){
imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg( ));
}// 7. Interference points
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 straight 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("There is no such image in the GD library ");
}
}// 11. Assembly
private function zuhe(){
$this->Hb();
$this->BgColor();
$this->ganrao();
$this->huxian();
$this->xiezi();
$this->OutImg();
}public function getCodeStr(){
return $this->codestr;
}
}
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/444609.htmlTechArticleThis article provides this php verification code generation class that is flexible and easy to use. Users can define the width, height, and width of each member. Canvas, number of words, type, and painting type can be defined by just modifying $Type...
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