class Code{ /// 1.幅、高さ、キャンバス、ワード数、タイプ、ペイントを含むように各メンバーを定義しますtype private $width; //Widthprivate $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; } } ?>
http://www.bkjia.com/PHPjc/444609.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/444609.html技術記事この記事では、柔軟で使いやすいこの PHP 検証コード生成クラスを提供します。ユーザーは、幅、高さ、キャンバス、単語数、タイプ、および描画タイプをを持つように各メンバーを定義できます。同時に変更する必要があります。定義する $Type...
|