Web サイトの登録、ログイン、またはメッセージ ページにはすべて、Web サイトが機械によって悪意を持って登録されるのを防ぐために、現在のオペレーターの正当性を確認するための登録コードが必要です。
検証コードの生成は、いくつかの手順にすぎません。まず、ランダムな文字列を取得し、次にキャンバスを作成し、生成された文字列をキャンバスに書き込むと、キャンバス上に線を描くこともできます。次に、検証コードを生成するコードを投稿します。
関連する推奨事項: 「PHP 入門チュートリアル 」
ソース コード:
<?php session_start(); //开启session //创建随机码,并保存在session中 for($i=0;$i<4;$i++) { $_nmsg.=dechex(mt_rand(0,15)); } //保存到session中 $_SESSION['code']=$_nmsg; //设置图片长和高 $_width=75; $_height=25; //创建一张图像 $_img=imagecreatetruecolor($_width,$_height); //白色背景 $_white=imagecolorallocate($_img,255,255,255); //填充到背景上 imagefill($_img,0,0,$_white); //黑色边框 $_black=imagecolorallocate($_img,0,0,0); imagerectangle($_img,0,0,$_width-1,$_height-1,$_black); //随即画出5个线条 for($i=0;$i<5;$i++) { $_rnd_color=imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height),$_rnd_color); } //雪花 for($i=0;$i<10;$i++) { $_rnd_color=imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)); imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),"*",$_rnd_color); } //输出验证码 for($i=0;$i<strlen($_SESSION['code']);$i++) { imagestring($_img,5,10+$i*15,mt_rand(0,10),$_SESSION['code'][$i],$_blackr); } //输出图像 header('Content-Type:image/png'); imagepng($_img); //销毁图像 imagedestroy($_img); ?>
以下は次のようになります。コードで使用されています 関数:
mt_rand — より良い乱数を生成します
int mt_rand ([ int $min ], int $max ) 多くの古い libc 乱数ジェネレーターには、いくつかの独自の機能があります。特定の未知のプロパティがあり、非常に遅い。 PHP の rand() 関数は、デフォルトで libc 乱数ジェネレーターを使用します。
mt_rand() 関数は非公式にこれを置き換えるために使用されます。この関数は、乱数生成器としてメルセンヌ ツイスターの既知の機能を使用しており、libc が提供する rand() よりも平均して 4 倍高速に乱数値を生成できます。
dechex — 10 進数から 16 進数への変換は、指定された数値パラメーターの 16 進表現を含む文字列を返します。変換できる最大値は 10 進数で 4294967295 で、結果は「ffffffff」となります。
imagecreatetruecolor — 新しい True Color イメージを作成します。
resource imagecreatetruecolor ( int $x_size , int $y_size )
imagecreatetruecolor() サイズ x_size および y_size の黒画像を表す画像識別子を返します。
imagecolorallocate — 画像に色を割り当てます。
int imagecolorallocate ( resource $image , int $red , int $green , int $blue )
imagecolorallocate() 指定された RGB コンポーネントで構成される色を表す識別子を返します。赤、緑、青は、それぞれ目的の色の赤、緑、青の成分です。これらのパラメータは、0 ~ 255 の整数、または 16 進数の 0x00 ~ 0xFF です。 image で表されるイメージで使用される各色を作成するには、imagecolorallocate() を呼び出す必要があります。
imagefill — 領域の塗りつぶし。
bool imagefill ( resource $image , int $x , int $y , int $color )
imagefill() イメージ image の座標 x、y (画像の左上隅)画像は 0, 0 です) を使用して、カラー color で領域を塗りつぶします (つまり、x、y 点と同じ色の点および隣接する点が塗りつぶされます)。
imagerectangle — 長方形を描画します。
bool imagerectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $col )
imagerectangle() カラー色を使用して画像を描画しますimage 長方形の左上隅の座標は x1、y1 であり、右下隅の座標は x2、y2 です。画像の左上隅の座標は 0, 0 です。
imageline — 線分を描画します。
bool imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )
imageline() 画像 image のカラー color を使用します。座標x1,y1からx2,y2まで線分を描きます(画像の左上隅が0,0)。
imagestring — 文字列を水平方向に描画します。
bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )
imagestring() 文字列 s を Col color で描画します Go image で表される画像の x、y 座標に変換します (これは文字列の左上隅の座標であり、画像全体の左上隅は 0, 0 です)。フォントが 1、2、3、4、または 5 の場合は、内蔵フォントが使用されます。
imagepng — 画像を PNG 形式でブラウザまたはファイルに出力します。
imagepng() GD 画像ストリーム (画像) を PNG 形式で標準出力 (通常はブラウザ) に出力します。 filename でファイル名が指定され、そのファイルに出力されます。
imagedestroy — 画像を破棄します
imagedestroy() 画像に関連付けられたメモリを解放します。
ソース コードを code.php として保存します。php ファイルですが、どのように使用するのでしょうか?
imagepng は、この php ファイルを png ファイルに出力しました。
これを直接呼び出すだけです。
<img src="mycode.php"/>
確認コードを使用する場合は、必ずセッションを開いてください。
rree以上がPHPで検証コードを設計するプロセスは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。