ホームページ >バックエンド開発 >PHPチュートリアル >PHP はエントリーとマスタリーから検証コード イメージを生成するチュートリアル_PHP チュートリアル

PHP はエントリーとマスタリーから検証コード イメージを生成するチュートリアル_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 16:56:051031ブラウズ

php にはグラフィック gd.dll ライブラリが用意されているため、php.ini で php-gd の前に ; を追加するだけで検証コード イメージを生成できます。 。 それでおしまい。

方法1

方法 2:
コードは次のとおりです コードをコピー

$認証番号=''; $ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M, N、O、P、Q、R、S、T、U、V、W、X、Y、Z";
$list=explode(",",$ychar);//分割関数
for($i=0;$i $randnum=ランド(0,35); $authnum.=$list[$randnum];//配列形式で出力


コードは次のとおりですプライベート関数 createCheckCode() {
コードをコピー
for(i=0;icodeNum;i++)
{
数値 = ランド(0,2); スイッチ(数字)
{
ケース 0: rand_number = rand(48,57); //数値
; ケース 1: rand_number = rand(65,90);break;//大文字
ケース 2: rand_number = rand(97,122);break;//小文字
}
$asc = sprintf("%c",rand_number); $asc_number = asc_number.asc; }
asc_number を返す
}



方法 3:

コードは次のとおりです

コードをコピーsrand(microtime()*100000);//タイマーと同等 $new_number.=$string[rand(0,strlen($string)-1)]; //すぐに配列を生成します }
$string="abcdefghigklmnopqrstuvwxyz123456789"; for($i=0;$i {



方法 4:

コードは次のとおりです


コードをコピー

for($i=0;$i { $rand.=dechex(rand(1,15));//10 進数を 16 進数に変換します }




数字と文字のコードをランダムに生成します:

コードは次のとおりです

コードをコピー

{ $rand.=dechex(rand(1,15)); } $_SESSION['check_num']=$ランド
//che.php セッション開始(); for($i=0;$i<4;$i++)
$image=imagecreatetruecolor(50,30); $bg=imagecolorallocate($im,0,0,0);//パレットを初めて使用するときは、背景色
$te=imagecolorallocate($im,255,255,255); 画像文字列($image,6,rand(0,20),rand(0,2),$rand,$te); ob_clean();//検証コードを生成する必要があるため、画像「http://localhost/**.php」が PHP Web ページに表示されますが、エラーがあるため表示できません
header("コンテンツタイプ:image/jpeg"); ?>


画像に干渉線を描画するコード:

コードは次のとおりです コードをコピー
for($i=0;$i<8;$i++)//複数の線を描画します
{
$cg=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//ランダムな色を生成します
イメージライン($im,rand(10,40),0,rand(10,40),20,$cg); }
画像上に干渉点を描画するコード:


コードは次のとおりですコードをコピーfor($i=0;$i<80;$i++)//複数の点を描画します 画像コードにテキストを書き込みます:
{
imagesetpixel($im,rand(0,40),rand(0,20),$cg); }


コードは次のとおりです$str=array('I','Me','Dear','Dear');//ストレージ表示漢字

最後に、実際の状況に基づいた完全な例を共有します

コードをコピー
for($i=0;$i<4;$i++)

{
$sss.=$str[rand(0,3)];//漢字をランダムに表示します
}

//$str=iconv("gb2312","utf-8",$str); //中国語の文字エンコード変換、私の場合は必要ないようです

imagettftext($im,10,0,rand(5,60),rand(5,60),$te,"simhei.ttf",$sss);//


呼び出し方法も非常に簡単です。上記の例を img.php ファイルに保存し、呼び出したいページに移動します。 HTMLページは以下の通りです

コードは次のとおりです コードをコピー
/**
* 認証コード画像を生成
*
* @param String $word セッション内の認証コードの変数名
​*/
関数valiCode($word='randcode'){
Header("Content-type: image/gif");
$border = 0; //ボーダーが必要かどうか 1 はい: 0 いいえ
$how = 4 //認証コードの桁数
; $w = $how*15 //画像の幅
; $h = 18 //画像の高さ
; $fontsize = 10 //フォントサイズ
; $alpha = "abcdefghijkmnpqrstuvwxyz"; //認証コードの内容 1: 文字
$number = "23456789"; //認証コードの内容 2: 番号
$randcode = "" //検証コード文字列の初期化
; srand((double)microtime()*1000000) //乱数シードを初期化します
$im = ImageCreate($w, $h) //検証用画像を作成します
/*
*基本フレームを描きます
*/
$bgcolor = ImageColorAllocate($im, 255, 255, 255) //背景色を設定します
; ImageFill($im, 0, 0, $bgcolor); //背景色を塗りつぶします
if($border)
{
$black = ImageColorAllocate($im, 0, 0, 0) //境界線の色を設定します
; ImageRectangle($im, 0, 0, $w-1, $h-1, $black);// 境界線を描画します
}

/*
* ランダムな文字を少しずつ生成します
*/
for($i=0; $i<$how; $i++)
{
$alpha_or_number = mt_rand(0, 1) //文字または数字
; $str = $alpha_or_number ? $alpha : $number;
$this = mt_rand(0, strlen($str)-1) //どの文字を取るか
; $code = substr($str, $that, 1) // 文字を取得します
; $j = !$i ? 4 : $j+15; // 文字の位置を描画します
$color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //文字に色が付きます
ImageChar($im, $fontsize, $j, 3, $code, $color3) // 文字を描画します
$randcode .= $code //認証コード文字列を少しずつ追加します
}

/*
*干渉を追加する必要がある場合は、コメントを削除してください
*
※以下のfor()ループは背景干渉線を描画するコードです
*/
/* + ------------------------背景干渉線の描画開始---------- - --------------------------------- + */
for($i=0; $i<5; $i++)//背景の干渉ラインを描画します
{
$color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干渉線の色
ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); }
/* + ----------------------------------背景干渉線描画終了------ --- ------------------------ + */

/*
*干渉を追加する必要がある場合は、コメントを削除してください
*
※以下のfor()ループは背景干渉点を描画するコードです
*/
/* + --------------------------------背景干渉点の描画開始----------- - ----------------------------- + */

for($i=0; $i<$how*40; $i++)//背景の干渉点を描画
{
$color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干渉点の色
ImageSetPixel($im, mt_rand(0,$w), mt_rand(0,$h), $color2); }

/* + ------------------------背景干渉点の描画終了----------- - -------------------------------- + */

// ログイン情報を送信するときに検証コードが正しいかどうかを確認しやすくするために、検証コード文字列をセッションに書き込みます。例: $_POST['randcode'] = $_SESSION['randcode']
$_SESSION[$word] = $randcode;
/*描画終了*/
Imagegif($im);
ImageDestroy($im);
/*描画終了*/
}

コードは次のとおりですコードをコピーコードは次のとおりです
<スクリプト言語="javascript"> 関数refresh_code()

{
form1.imgcode.src="verifycode.php?a="+Math.random(); }


検証コード よく見えない場合は、 に変更します。



これで、検証コード呼び出しを実装できるようになりました。

別の送信を追加して、確認コードが正しいかどうかを確認してください

コードをコピー

セッション開始(); if((strtoupper($_POST["code"])) == strtoupper(($_SESSION["VerifyCode"]))){ Print("認証コードエラー"); }?>www.bkjia.com
print("検証コードは正しいです。"); }その他{


これで認証コード画像の生成と利用までのプロセスが完了しました。これは、PHP の入門から認証コードの習得までを網羅していると考えられます。




http://www.bkjia.com/PHPjc/631625.html

tru​​e

http://www.bkjia.com/PHPjc/631625.html技術記事

php ではグラフィック gd.dll ライブラリが提供されているため、php で検証コード イメージを生成するのは非常に簡単です。 gd グラフィック ライブラリを有効にするには、php.ini の php-gd の前に「;」を追加するだけです。 ...

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