ホームページ  >  記事  >  バックエンド開発  >  PHP で検証コードを設計するプロセスを簡単に説明します。

PHP で検証コードを設計するプロセスを簡単に説明します。

藏色散人
藏色散人オリジナル
2019-11-01 09:42:012105ブラウズ

PHP で検証コードを設計するプロセスを簡単に説明します。

#PHP で検証コードを設計するプロセスを簡単に説明します。

php は GD ライブラリを使用して検証コードを生成します

1. 描画手順:

1. キャンバスを作成し、色を割り当て、次の 2 つの関数を使用します (PHP マニュアルの GD ライブラリ関数にあります):

imagecreatetruecolor()

imagecolorallocate()

2. ペイント プロセス:

imagefill()

imagettftext()

imagesetpixel( )

imageline ()

3. 出力画像:

header(“Content-Type:image/png”);

imagepng();

imagejpeg( );

4. 画像を破棄します (メモリを解放します)

imagedestroy();

2. 描画の具体的な手順

検証コード文字列の生成

private function getCode(){
        $str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $t='';
        for($i=0;$i<$this->m;$i++){
            $t.=$str[rand(0,$this->type[&#39;letter&#39;])];
        }
        return $t;
    }

検証コードの描画

function drawCode(){
        $code=$this->getCode();//获取验证码字符串
        imagefill($this->im, 0, 0, $this->bg);
        for ($i=0; $i <200 ; $i++) { 
            imagesetpixel($this->im, rand(0,$this->width), rand(0,$this->height), rand(0,255));
        }
        imageline($this->im, rand(0,$this->width), rand(0,$this->height), rand(0,$this->width), rand(0,$this->height), rand(0,255));
        $c=imagecolorallocate($this->im, rand(0,200), rand(0,200), rand(0,200));
        for($i=0;$i<$this->m;$i++){
            imagettftext($this->im, 18, rand(-40,40), 8+(18*$i), 24, $c, "georgia.ttf",$code[$i] );
        }
    }

出力画像

function printImage(){
        $this->drawCode();
        header("Content-Type:image/jpeg");
        imagepng($this->im);
        $this->destroy();
    }
    function destroy(){
        imagedestroy($this->im);
    }

3. コードのデモ

 9,'letter' => 61 );
    function __construct($width,$height,$m)
    {
        $this->width=$width;
        $this->height=$height;
        $this->m=$m;
        $this->im=imagecreatetruecolor($this->width, $this->height);
        $this->bg=imagecolorallocate($this->im, 220, 220, 220);
    }
    private function getCode(){
        $str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $t=&#39;&#39;;
        for($i=0;$i<$this->m;$i++){
            $t.=$str[rand(0,$this->type[&#39;letter&#39;])];
        }
        return $t;
    }
    function drawCode(){
        $code=$this->getCode();//获取验证码字符串
        imagefill($this->im, 0, 0, $this->bg);
        //加干扰点
        for ($i=0; $i <200 ; $i++) { 
            imagesetpixel($this->im, rand(0,$this->width), rand(0,$this->height), rand(0,255));
        }
        //加干扰线
        imageline($this->im, rand(0,$this->width), rand(0,$this->height), rand(0,$this->width), rand(0,$this->height), rand(0,255));
        $c=imagecolorallocate($this->im, rand(0,200), rand(0,200), rand(0,200));
        for($i=0;$i<$this->m;$i++){
            imagettftext($this->im, 18, rand(-40,40), 8+(18*$i), 24, $c, "georgia.ttf",$code[$i] );
        }
    }
    function printImage(){
        $this->drawCode();
        header("Content-Type:image/jpeg");
        imagepng($this->im);
        $this->destroy();
    }
    function destroy(){
        imagedestroy($this->im);
    }
}
function unit_test(){
    $obj=new Image(20*4,30,4);
    $obj->printImage();
}
unit_test();
?>

PHP関連の知識の詳細については、こちらをご覧ください。

PHP 中国語 Web サイト にアクセスしてください。

以上がPHP で検証コードを設計するプロセスを簡単に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。