ホームページ >バックエンド開発 >PHPチュートリアル >PHP漢字検証コード生成プログラム(1/3)_PHPチュートリアル

PHP漢字検証コード生成プログラム(1/3)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:45:29906ブラウズ

php 漢字検証コード生成プログラム この PHP 中国語文字検証コード生成プログラムは実際には非常に単純です。中国語文字検証コードを生成するには、生成をサポートするために arial.ttf を使用します。そうしないと、中国語画像検証コードが文字化けします。

phpチュートリアル 漢字検証コード生成プログラム
この PHP 中国語文字検証コード生成プログラムは実際には非常に単純です。中国語文字検証コードを生成するには、生成をサポートするために arial.ttf を使用します。そうしないと、中国語画像検証コードが文字化けします。
*/

クラスセキュアコード
{
プライベート静的 $instance=null;
プライベート $code = '';
プライベート $fontfile;
プライベート $validate;
プライベート $image;
Private $specialadd = 'セキュアコードの特別な文字列';
プライベート $codeexpire=86400;
プライベート $codecookiename='secure_code';

/**
*施工方法
​​*/
プライベート関数 securecode()
{
$this->fontfile = dirname(__file__) '/arial.ttf';
}

プライベート関数__construct()
{
$this->securecode();
}

パブリック静的関数 getinstance()
{
if (self::$instance==null)
self::$instance=new self();

return self::$instance;
}

/**
* フォントファイルへのパスを指定します。デフォルトは現在のフォルダー内の arial.ttf ファイルです
* @param $fontfile ファイルパス
* @return void
​​*/
関数loadfont($fontfile)
{
$this->fontfile = $fontfile;
}

/**
* 画像出力メソッド。このメソッドを実行する前に、プログラムはいかなる形式の出力も持たないでください
* @return void;
​​*/
関数ストローク()
{
$this->savecode();
self::sendheader();
imagegif( $this->validate );
Imagedestroy( $this->validate );
imagedestroy( $this->image );
}

/**
*写真の保存方法
* @param $filename 保存パス
* @return void
​​*/
    関数 save($filename)
    {
        $this->savecode();
        imagegif( $this->validate , $filename );
        imagedestroy( $this->validate );
        imagedestroy( $this->image );
    }
   
  /**
※認証コードの確認方法
* @param $input 検証する文字列、つまりユーザーの入力
* @return ブール値の検証結果
​​*/
    関数 verify($input)
    {
        $input=strto lower($input);
        $targetcode=$this->認証コード($input);
        $code=$this->getcookie();
        if (empty($code)||$code!=$targetcode)
            $result= false;
        それ以外
            $result=true;
        $_cookie[$this->コードクッキー名]='';
        setcookie ( $this->codecookiename, '', - 1 );
        $result を返します;
    }

/**
*画像の作成方法
* @return void;
​​*/
    関数createimage()
    {
        $this->randcode();
       
        $サイズ = 30;
        $width = 90;
        $高さ = 35;
        $degrees = 配列 (
            rand( 0 , 30 )、rand( 0 , 30 )、rand( 0 , 30 )、rand( 0 , 30 )
        );
       

for ($i = 0; $i         {
            if (rand() % 2);
            それ以外の場合 $degrees[$i] = -$degrees[$i];
        }
       
        $this->image = imagecreatetruecolor( $size , $size );
        $this->validate = imagecreatetruecolor( $width , $height );
        $back = imagecolorallocate( $this->image , 255 , 255 , 255 );
        $border = imagecolorallocate( $this->image , 0 , 0 , 0 );
        imagefilledrectangle( $this->validate , 0 , 0 , $width , $height , $back );
       
        for ($i = 0; $i         {
            $temp = self::rgbtohsv( rand( 0 , 250 ) , rand( 0 , 150 ) , rand( 0 , 250 ) );
           
            if ($temp[2] > 60) $temp[2] = 60;
           
            $temp = self::hsvtorgb( $temp[0] , $temp[1] , $temp[2] );
            $textcolor[$i] = imagecolorallocate( $this->image , $temp[0] , $temp[1] , $temp[2] );
        }
       
        for ($i = 0; $i         {
            $randpixelcolor = imagecolorallocate( $this->validate , rand( 0 , 255 ) , rand( 0 , 255 ) , rand( 0 , 255 ) );
            imagesetpixel( $this->validate , rand( 1 , 87 ) , rand( 1 , 35 ) , $randpixelcolor );
        }
       
        $temp = self::rgbtohsv( rand( 220 , 255 ) , rand( 220 , 255 ) , rand( 220 , 255 ) );
       
        if ($temp[2]        
        $temp = self::hsvtorgb( $temp[0] , $temp[1] , $temp[2] );
        $randlinecolor = imagecolorallocate( $this->image , $temp[0] , $temp[1] , $temp[2] );
       
        self::imagelinethick( $this->validate , $textcolor[rand( 0 , 3 )] );
       
        imagefilledrectangle( $this->image , 0 , 0 , $size , $size , $back );
        putenv( 'gdfontpath=' . realpath( '.' ) );
       
        // 使用するフォントの名前を指定します (拡張子 .ttf がないことに注意してください
)         imagettftext( $this->image , 15 , 0 , 8 , 20 , $textcolor[0] , $this->fontfile , $this->code[0] );
       
        $this->image = imagerotate( $this->image , $degrees[0] , $back );
        imagecolortransparent( $this->image , $back );
        imagecopymerge( $this->validate , $this->image , 1 , 4 , 4 , 5 , imagex( $this->image ) - 10 , imagesy( $this->image ) - 10 , 100 ) ;
       
        $this->image = imagecreatetruecolor( $size , $size );
        imagefilledrectangle( $this->image , 0 , 0 , $size , $size , $back );
        imagettftext( $this->image , 15 , 0 , 8 , 20 , $textcolor[1] , $this->fontfile , $this->code[1] );
        $this->image = imagerotate( $this->image , $degrees[1] , $back );
        imagecolortransparent( $this->image , $back );
        imagecopymerge( $this->validate , $this->image , 21 , 4 , 4 , 5 , imagex( $this->image ) - 10 , imagesy( $this->image ) - 10 , 100 ) ;
       
        $this->image = imagecreatetruecolor( $size , $size );
        imagefilledrectangle( $this->image , 0 , 0 , $size - 1 , $size - 1 , $back );
        imagettftext( $this->image , 15 , 0 , 8 , 20 , $textcolor[2] , $this->fontfile , $this->code[2] );
        $this->image = imagerotate( $this->image , $degrees[2] , $back );
        imagecolortransparent( $this->image , $back );
        imagecopymerge( $this->validate , $this->image , 41 , 4 , 4 , 5 , imagex( $this->image ) - 10 , imagesy( $this->image ) - 10 , 100 ) ;
       
        $this->image = imagecreatetruecolor( $size , $size );
        imagefilledrectangle( $this->image , 0 , 0 , $size - 1 , $size - 1 , $back );
        imagettftext( $this->image , 15 , 0 , 8 , 20 , $textcolor[3] , $this->fontfile , $this->code[3] );
        $this->image = imagerotate( $this->image , $degrees[3] , $back );
        imagecolortransparent( $this->image , $back );
        imagecopymerge( $this->validate , $this->image , 61 , 4 , 4 , 5 , imagex( $this->image ) - 10 , imagesy( $this->image ) - 10 , 100 ) ;
        imagerectangle( $this->validate , 0 , 0 , $width - 1 , $height - 1 , $border );
    }

1 2 3

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633019.html技術記事 php 中文汉字验证码生成程序这款关用php 中文汉字验证码生成程序其实很简单的,生成中文汉字验证码必要字体来支持了,下面我们用的ar...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。