ホームページ > バックエンド開発 > PHPの問題 > PHPで検証コードを設計するプロセスは何ですか

PHPで検証コードを設計するプロセスは何ですか

爱喝马黛茶的安东尼
リリース: 2023-02-23 12:42:02
オリジナル
2343 人が閲覧しました

PHPで検証コードを設計するプロセスは何ですか

Web サイトの登録、ログイン、またはメッセージ ページにはすべて、Web サイトが機械によって悪意を持って登録されるのを防ぐために、現在のオペレーターの正当性を確認するための登録コードが必要です。

検証コードの生成は、いくつかの手順にすぎません。まず、ランダムな文字列を取得し、次にキャンバスを作成し、生成された文字列をキャンバスに書き込むと、キャンバス上に線を描くこともできます。次に、検証コードを生成するコードを投稿します。

関連する推奨事項: 「PHP 入門チュートリアル

ソース コード:

<?php
session_start(); //开启session
//创建随机码,并保存在session中
for($i=0;$i<4;$i++)
{
$_nmsg.=dechex(mt_rand(0,15));
}
//保存到session中
$_SESSION[&#39;code&#39;]=$_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[&#39;code&#39;]);$i++)
{
imagestring($_img,5,10+$i*15,mt_rand(0,10),$_SESSION[&#39;code&#39;][$i],$_blackr);
} 
//输出图像
header(&#39;Content-Type:image/png&#39;);
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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート