ホームページ > バックエンド開発 > PHPチュートリアル > 3 つの PHP 中国語検証コードの生成と呼び出しメソッド_PHP チュートリアル

3 つの PHP 中国語検証コードの生成と呼び出しメソッド_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:45:25
オリジナル
940 人が閲覧しました

3 つの PHP 中国語検証コードの生成と呼び出しメソッド PHP で中国語の検証コードを生成するには、検証コードの生成とは別の操作を実行する必要があります。GD 関数は UTF8 形式でエンコードされたテキストのみを受け入れるため、PHP を使用して中国語の検証コードを生成する場合は、最初にエンコード変換を実行する必要があります。動作するphpのiconvをインスタンス化できます。

中国語の検証コードの生成とメソッドの呼び出しに関する 3 つの PHP チュートリアル
PHP で中国語の検証コードを生成するには、検証コードの生成とは別の操作を行う必要があります。 gd 関数は UTF8 形式でエンコードされたテキストのみを受け入れるため、PHP を使用して中国語の検証コードを生成する場合は、最初にエンコード変換を実行する必要があります。動作するphpのiconvをインスタンス化できます。
*/

$ch_str="中国語の文字を含む中国語の確認コードを生成したいと考えています";
$str=array();
for ($i=0;$i {
$str[]=$ch_str[$i].$ch_str[$i+1].$ch_str[$i+2];
}
//画像の長さと高さ
$image_x=200;
$image_y=100;
$im = imagecreate($image_x,$image_y);
//ここの写真の背景色は白です
$bkg = imagecolorallocate($im,255,255,255);
// 表示されるフォント スタイル。ファイルを対応するディレクトリに配置する必要があります。ファイルがない場合は、ウィンドウのフォント ファイルを探してください。
$fnt = "simfang.ttf";
//画像に色を割り当てます
$white=imagecolorallocate($im,234,185,95);
//画像上に楕円弧を描き、下側の座標点を指定します
imagearc($im, 150, 8, 20, 20, 75, 170, $white);
imagearc($im, 180, 7,50, 30, 75, 175, $white);
//画像上に線分を描き、下の座標点を指定します
イメージライン($im,20,20,180,30,$white);
イメージライン($im,20,18,170,50,$white);
イメージライン($im,25,50,80,50,$white);
//ランダムなポイントの数
$noise_num=3000;
$line_num=80;
//紛らわしい様々な文字の色
$rectangle_color=imagecolorallocate($im,0xaa,0xaa,0xaa);
$noise_color=imagecolorallocate($im,0x00,0x00,0x00);
$font_color=imagecolorallocate($im,0x00,0x00,0x00);
for($i=0;$i {
// 座標点上に単一のピクセルを描画します。この点は上で定義されており、黒です。
imagesetpixel($im,mt_rand(0,$image_x),mt_rand(0,$image_y),$noise_color);
}

for($i=0;$i {
$line_color=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
// 2 つの座標点の間に線を描きます。色は上で定義されています
Imageline($im,mt_rand(0,$image_x),mt_rand(0,$image_y),mt_rand(0,$image_x),mt_rand(0,$image_y),$line_color); }
$randnum=rand(0,count($str)-4);
//偶数にしてください
if ($randnum%2)
{
$randnum+=1; }
$str1=$str[$randnum].$str[$randnum+1];
($i=0;$i {
imagettftext($im, rand(28,32), rand(0,70), rand(($image_x/4)*$i+$image_x/10,($image_x/4)*$i+$image_x/8), rand($image_y/2+$image_y/10,$image_y/2+$image_y/5), $font_color, $fnt, $str[$randnum+$i]); }
imagepng($im);
imagedestroy($im);

//中国語の認証コード 2 を生成します
$str="漢字";

$image_x=110; $image_y=110; $im = imagecreate($image_x,$image_y); $bkg = imagecolorallocate($im,255,255,255); $fnt = "hb.ttf" //表示されるフォントスタイル

; $white=imagecolorallocate($im,234,185,95); imagearc($im, 150, 8, 20, 20, 75, 170, $white); imagearc($im, 180, 7,50, 30, 75, 175, $white); イメージライン($im,20,20,180,30,$white); イメージライン($im,20,18,170,50,$white); イメージライン($im,25,50,80,50,$white); $noise_num=3000; $line_num=80; imagecolorallocate($im,0xff,0xff,0xff); $rectangle_color=imagecolorallocate($im,0xaa,0xaa,0xaa); $noise_color=imagecolorallocate($im,0x00,0x00,0x00); $font_color=imagecolorallocate($im,0x00,0x00,0x00); $line_color=imagecolorallocate($im,0x00,0x00,0x00); for($i=0;$i imagesetpixel($im,mt_rand(0,$image_x),mt_rand(0,$image_y),$noise_color); for($i=0;$i imageline($im,mt_rand(0,$image_x),mt_rand(0,$image_y),mt_rand(0,$image_x),mt_rand(0,$image_y),$line_color); $randnum=rand(0,strlen($str)-4); if ($randnum%2)$randnum+=1; $str1=substr($str,$randnum,4); $str2 = iconv("gb2312","utf-8",$str1);//$str1 に中国語の文字が含まれていることを確認します

imagettftext($im, rand(28,32), rand(0,70), rand(25,27), rand(70,100), $font_color, $fnt, $str2); 画像png($im); imagedestroy($im);

//配列に漢字を入れます
/*
gd 関数は、utf8 形式でエンコードされたテキストのみを受け入れるため、テキストを書き込む前にエンコード変換を最初に実行する必要があります。 PHP に付属の iconv ライブラリと mbstring ライブラリの両方でこの作業を完了できます
*/

$randcode=array('宠');
$codetable=array();
$fp=fopen("gb2312.txt","r");
while($line=fgets($fp))
    $codetable[hexdec(substr($line,0,6))]=substr($line,7,6);
fclose($fp); 

//gb2312转utf8
関数 gb2utf8($gbstr)
{
    グローバル $codetable;
    if(trim($gbstr)=="")
        $gbstr;
を返します     $ret="";
    $utf8="";
    その間($gbstr)
    {
        if(ord(substr($gbstr,0,1))>127)
        {
            $thisw=substr($gbstr,0,2);
            $gbstr=substr($gbstr,2,strlen($gbstr));
            $utf8="";
            @$utf8=u2utf8(hexdec($codetable[hexdec(bin2hex($thisw))-0x8080]));

if($utf8!="")
            for($i=0;$i                 $ret.=chr(substr($utf8,$i,3));
        }
        それ以外
        {
            $ret.=substr($gbstr,0,1);
            $gbstr=substr($gbstr,1,strlen($gbstr));
        }
    }
    $ret を返します;
}
 

//ユニコード转utf8
関数u2utf8($c)
{
    $str="";
    if($c         $str.=$c;
    elseif($c     {
        $str.=(0xc0|$c>>6);
        $str.=(0x80|$c&0x3f);
    }
    elseif($c     {
        $str.=(0xe0|$c>>12);
        $str.=(0x80|$c>>6&0x3f);
        $str.=(0x80|$c&0x3f);
    }
    elseif($c     {
        $str.=(0xf0|$c>>18);
        $str.=(0x80|$c>>12&0x3f);

$str.=(0x80|$c>>6&0x3f);
        $str.=(0x80|$c&0x3f);
    }
    $str;
を返します }

//生成付加符号
関数 create_excode($length)
{
 グローバル $rancode;
    header("コンテンツタイプ: 画像/png");
 $image_x=$length*30;    //写真宽度
 $image_y=40;            //写真の高さ
    $noise_num=80*$length;   // ポイント数
    $line_num=$length-2;      //干扰ライン数
 $image=imagecreate($image_x,$image_y);
 imagecolorallocate($image,0xff,0xff,0xff);                  //設定背景颜色
 $rectangle_color=imagecolorallocate($image,0xaa,0xaa,0xaa); //边框颜色
 $noise_color=imagecolorallocate($image,0x00,0x00,0x00);     //杂点颜色
 $font_color=imagecolorallocate($image,0x00,0x00,0x00);      //字体颜色
 $line_color=imagecolorallocate($image,0x33,0x33,0x33);      //干扰線颜色

// 杂点を追加します
    for($i=0;$i   imagesetpixel($image,mt_rand(0,$image_x),mt_rand(0,$image_y),$noise_color);

$font_face="simkai.ttf"; //フォント
$x=2;
$session_code='';
for($i=0;$i {
$code=$randcode[mt_rand(0,count($randcode)-1)];
Imagettftext($image,18,mt_rand(-6,6),$x,29,$font_color,$font_face,gb2utf8($code));
$x+=30;
$session_code.=$code;
}
@session_start();
$_session['excode']=$session_code; //追加コードの値をセッションに入れます


//干渉線を追加
for($i=0;$i イメージライン($image,mt_rand(0,$image_x),mt_rand(0,$image_y),
mt_rand(0,$image_x),mt_rand(0,$image_y),$line_color);
imagerectangle($image,0,0,$image_x-1,$image_y-1,$rectangle_color); //境界線を追加します
imagepng($image);
imagedestroy($image);
}
create_excode(6);

// 使用する場合は、HTML 構文を使用します: を呼び出すだけです。サーバー側で検証を行う場合は、セッションに保存されている検証文字と、セッションによって送信された文字を比較します。ユーザーが同じ場合、検証済みです

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633011.html技術記事 3 つの PHP 中国語検証コードの生成とメソッドの呼び出し PHP で中国語検証コードを生成するには、GD 関数は UTF8 形式でエンコードされたテキストのみを受け入れるため、検証コードの生成とは異なる操作を実行する必要があります...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート