Home Backend Development PHP Tutorial Complete code of PHP verification code generation class_PHP tutorial

Complete code of PHP verification code generation class_PHP tutorial

Jul 20, 2016 am 11:12 AM
php code Can Easy to use whole definition supply article flexible generate user code kind verify

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
 代码如下 复制代码

<?php
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
<?php
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 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

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

CakePHP Date and Time

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

CakePHP File upload

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

CakePHP Routing

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

Discuss CakePHP

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

CakePHP Project Configuration

CakePHP Quick Guide CakePHP Quick Guide Sep 10, 2024 pm 05:27 PM

CakePHP Quick Guide

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

How To Set Up Visual Studio Code (VS Code) for PHP Development

See all articles