ホームページ  >  記事  >  バックエンド開発  >  PHP イメージ検証コードの作成と実装の共有 (完全版)_PHP チュートリアル

PHP イメージ検証コードの作成と実装の共有 (完全版)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:18:37962ブラウズ

今日ランダム関数 rand() に遭遇したときと同じように、これをどうするかを考えて、最終的に確認コード、数字の確認コード、文字の確認コード、中国語の確認コードを思い出しましたが、方法がわかりません。どうすればいいでしょうか? インターネットで検索したり、他の人のコードを見て、分からなかったらビデオを見たり、先生の講義を聞いたり、見つけた機能や注目すべき点をメモしたりするのが一般的です。 、一般的な Web ページでは、特定の番号に基づいたランダムな確認コードがボックスで囲まれており、背景として画像が表示されているようです。自分で見て入力してみると、分からない問題もたくさんありましたが、地に足をつけていれば必ず身につくと信じています。非常に乱雑な文章かもしれませんが、いつか実現すると信じています。 1.乱数を生成する - 「画像を作成する -」画像に乱数を書き込む - 「画像に干渉値(点、線)を追加する -」「セッションに保持する -」フォームで参照する;ランダム関数: rand (int min, int max); 由来がなければ決して変化しません。数字や文字を含む乱数、中国語の乱数 (配列) など、乱数を生成するためのコードをインターネットでたくさん見てきました。コードは次のとおりです (オンラインでコピーする人もいます。個人的に受け取らないでください。最初のコード:

コードをコピーします)。

$authnum='';
$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=rand(0,35);
$authnum.=$list[$randnum];//配列の形式

2 番目:
コードをコピー コードは次のとおりです:

private function createCheckCode()
{
for(i=0;icodeNum;i++)
{
number = rand(0,2);
switch(number)
{
case 0 : rand_number = rand(48,57); //数値
case 1: rand_number = rand(65,90);break ;//大文字
case 2: rand_number = rand(97,122);break;//小文字
}
$asc = sprintf("%c",rand_number)
$asc_number = asc_number.asc; asc_number;
}


3 番目のタイプ:


コードをコピー コードは次のとおりです:
srand(microtime()*100000);//timer と同等
$string="abcdefghigklmnopqrstuv wxyz123456789";
for($i=0;$i<4;$i++)
{
$new_number.= $string[rand(0,strlen($string)-1)];// すぐに配列を生成します
}


4 番目の方法:


コードをコピーします コードは次のとおりです:
for($ i=0;$i{
$rand.=dechex(rand(1, 15));//10 進数を 16 進数に変換します
}


GD ライブラリ: (画像処理画像を生成するための一連の画像処理関数の IPI を提供します) php で GD ライブラリを有効にします: php.ini 設定ファイルで、 「;extension=php_gd2.dll」の「;」を削除します
いくつかの GD ライブラリ関数の紹介: 1 .imagecreatetruecolor(int x_size,int Y_size) 新しい True Color イメージを作成します
2.imagecolorallocate(resource image,int red, int green,int blue) 画像に色を割り当てる、三原色
3.imagestring(resource,font,int x, int y, content, color)描画関数4.header("Content-type: image/jpeg")出力関数 php のヘッダーは、php5 がヘッダーを定義するアクションで、 1、Content-type: xxxx/yyyy 2、Location:xxxx:yyyy/zzzz 3、Status:nnn xxxxxx xxxx/yyyy の 3 種類をサポートします。コンテンツ ファイルの例: image/gif image/jpeg image/png imagejpeg(),imagegif(),imagepang() 5.iamgeline(resource image, int x1, int y1, int x2, int y2, int color);描画関数、(int x, int y) 開始座標 6.imagesetpixel(リソース画像, int x, int y, int color) 描画ポイント 関数 7.imagettftext(リソース画像, float サイズ, float 角度, int x, int y, int color, string fontfile, string text) フォント書き込み関数付き 8.iconv("gb2312","utf-8","character String"); //まず、テキストを utf-8 形式に変換し、php 検証を挿入します。コードを中国語に変換します。

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



コードをコピー コードは次のとおりです:
//che.php
session_start(); ;$i{
$rand.=dechex(rand(1,15))
}
$_SESSION['check_num']=$rand; ;
$ bg=imagecolorallocate($im,0,0,0);//初めてパレットを使用するときは、背景色
$te=imagecolorallocate($im,255,255,255); ,rand( 0,20),rand(0,2),$rand,$te);
ob_clean();//画像「http://localhost/**.php」が PHP Web ページに表示されます。検証コードを生成するために必要なため、表示できません
header("Content-type:image/jpeg");

;
画像に干渉線を描画するコード:
コードをコピー コードは次のとおりです:

for($i=0;$i{
$ cg =imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));//ランダムな色を生成します
imageline($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)
}

画像コードにテキストを書き込みます:
Copyコード コードは次のとおりです:

$str=array('I','I','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);//

0: フォントの傾き、「simhei.ttf」: フォント スタイル。通常はルート ディレクトリに配置されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/325469.html技術記事今日ランダム関数 rand() を見つけたときと同じように、これをどうするか考えましたが、最終的には検証コード、数値検証コード、アルファベット検証コード、中国語検証コードを思い出しましたが、思い出せませんでした。やり方がわからないので...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:apache+codeigniter は .htcaccess_PHP チュートリアルを通じて動的な第 2 レベルのドメイン名解決を行います次の記事:apache+codeigniter は .htcaccess_PHP チュートリアルを通じて動的な第 2 レベルのドメイン名解決を行います

関連記事

続きを見る