ホームページ  >  記事  >  バックエンド開発  >  PHP 検証コード生成クラスの完全なコード_PHP チュートリアル

PHP 検証コード生成クラスの完全なコード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:12:05956ブラウズ

この記事では、柔軟で使いやすいこの PHP 検証コード生成クラスを提供します。ユーザーは、幅、高さ、キャンバス、単語数、タイプ、および描画タイプをを持つように各メンバーを定義できます。同時に変更する必要があります。 $Type を使用して、生成されたものが純粋な数字と純粋な小文字、大文字と小文字の混合であることを定義し、必要な友人がそれを参照できるようにします。

コードは次のとおりです コードをコピーします

class Code{

/// 1.幅、高さ、キャンバス、ワード数、タイプ、ペイントを含むように各メンバーを定義しますtype

private $width; //Width

private $num; //検証コードの数
private $imgType; //文字列型 1 , 2, 3 の 3 つのオプション 1 純粋な数字 2 純粋な小文字 3 大文字と小文字の混合
private $hb; //Canvas
public $codestr; //検証コード string

public function __construct($height=20,$num) =4,$imgType=" jpeg",$Type=1){
$this->幅 = $num*20;

$this->高さ = $height;

$this->num = $num ;
$this->imgType = $imgType;
$this->Type = $Type;
$this->codestr();
$this->zuhe();
}

// 2 . ランダムな文字列関数を定義します
private function codestr(){

switch($this->Type){


case 1: // 1 ~ 9 の乱数を取得するには、Type を 1 にします
$ str = implode("", array_rand(range(0,9),$this->num));

break;

case 2: // Type 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 ;
ケース 1:
$ o = rand(65,90);
break;
ケース 2:
$o = rand(97,122);
break;
}
$str .= sprintf("%c",$ o);
}
break ;
}


return $str;

}



// 3. キャンバス画像リソースを初期化します

プライベート関数 Hb(){

$this->hb = imagecreatetruecolor($this ->width,$this- >height);
}

// 4. 背景色の生成
プライベート関数 Bg(){

return imagecolorallocate($this->hb,rand(130,250),rand(130,250) ),rand(130,250));

}

/// 5. フォントカラーを生成する
プライベート関数 Font(){

return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand( 0,100));

}

/ / 6. 背景色を塗りつぶす
プライベート関数 BgColor(){

imagefilledrectangle($this->hb,0,0,$this->width,$this->height, $this->Bg()) ;

}

// 7. 干渉点
プライベート関数 ganrao(){

$sum=floor(($this->width)*($this->height) /3);

for($i =0;$iimagesetpixel($this->hb,rand(0,$this->width),rand(0,$this) ->height),$this- >Bg());
}
}

// 8. ランダムな直線円弧
プライベート関数 huxian(){

for($i=0;$i<$this ->num;$i++){

imageArc($this->hb,rand(0,$this->幅),rand(0,$this->高さ),rand(0,$this- >width),rand(0, $this->height),rand(0,360),rand(0,360),$this->Bg()); 9.
private を書くfunction xiezi(){
for($ i=0;$inum;$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. 出力
プライベート関数 OutImg(){
$shuchu="image".$this->imgType;
$header="Content; -type:image/".$this- >imgType;
if(function_exists($shuchu)){
header($header);

$shuchu($this->hb);

}else{
exit( "GD ライブラリにはそのようなイメージはありません");
}
}

// 11.
プライベート関数 zuhe(){
$this->Hb();
$this->BgColor(); をアセンブルします。
$this->ganrao();
$ this->huxian();

$this->xiezi();

$this->OutImg();
}

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






www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444609.html技術記事この記事では、柔軟で使いやすいこの PHP 検証コード生成クラスを提供します。ユーザーは、幅、高さ、キャンバス、単語数、タイプ、および描画タイプをを持つように各メンバーを定義できます。同時に変更する必要があります。定義する $Type...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。