ホームページ >バックエンド開発 >PHPチュートリアル >完璧なPHP生成検証コードプログラム code_PHPチュートリアル

完璧なPHP生成検証コードプログラム code_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:46:12856ブラウズ

この記事では、検証コードを生成する非常に優れた php プログラムを紹介します。まず、ユーザーが HTTP をリクエストすると、サーバーは一意の sessionid を作成し、次に GD ライブラリまたは imagemagick ツールを起動します。 、プログラムによって生成されたランダムな文字を画像に書き込み、それをクライアントに表示します。その後、ユーザーがデータを入力して送信すると、プログラムは生成された検証を比較のためにセッションに保存し、検証の生成が完了します。コードを確認しました。

•新しい PHP ファイル captcha_code_file.php を作成します

ページを呼び出して検証コードページindex.phpを表示します

コードは次のとおりです コードをコピー

//まずセッションを開きます
session_start();
//フロントに表示される認証コードの長さと幅を定義します
$image_width = 120;
$image_height = 40;
$characters_on_image = 6;
$font = './monofont.ttf';

//CAPTCHA コードで使用できる文字。
//混乱を招く文字 (l 1 と i など) を避けてください
$possible_letters = '23456789bcdfghjkmnpqrstvwxyz';
$random_dots = 10;
$random_lines = 30;
$captcha_text_color="0x142864";
$captcha_noice_color = "0x142864";
//検証コードを生成する文字列を定義します
$コード = '';

$i = 0;
while ($i $code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1);
$i++;
}

$font_size = $image_height * 0.75;
$image = @imagecreate($image_width, $image_height);

/* ここで背景、テキスト、ノイズの色を設定します */
$background_color = imagecolorallocate($image, 255, 255, 255);

$arr_text_color = hexrgb($captcha_text_color);
$text_color = imagecolorallocate($image, $arr_text_color['red'],
$arr_text_color['green'], $arr_text_color['blue']);

$arr_noice_color = hexrgb($captcha_noice_color);
$image_noise_color = imagecolorallocate($image, $arr_noice_color['red'],
$arr_noice_color['green'], $arr_noice_color['blue']);

/* バックグラウンドでドットをランダムに生成します */
for( $i=0; $i imagefilledellipse($image, mt_rand(0,$image_width),
mt_rand(0,$image_height), 2, 3, $image_noise_color);
}

/* 画像の背景にランダムに線を生成 */
for( $i=0; $i imageline($image, mt_rand(0,$image_width), mt_rand(0,$image_height),
mt_rand(0,$image_width), mt_rand(0,$image_height), $image_noise_color);
}

/* テキスト ボックスを作成し、そこに 6 文字のコードを追加します */
$textbox = imagettfbbox($font_size, 0, $font, $code); $x = ($image_width - $textbox[4])/2;
$y = ($image_height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font, $code);

/* ページの HTML ページにキャプチャ画像を表示 */

header('Content-Type: image/jpeg');// ブラウザー ウィンドウに表示される画像タイプを定義します
imagejpeg($image);//画像を表示します
imagedestroy($image);//画像インスタンスを破棄します
//セッションを設定して検証を行います
$_SESSION['6_letters_code'] = $code;

関数 hexrgb ($hexstr)

{
$int = hexdec($hexstr);

return array("red" => 0xFF & ($int >> 0x10),

"緑" => 0xFF & ($int >> 0x8)、
"青" => 0xFF & $int);
}

コードは次のとおりです コードをコピー

session_start();
if(isset($_REQUEST['送信'])){
// サーバー側の検証をチェックするコード
If(empty($_SESSION['6_letters_code'] ) ||
strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0)
{
$msg="入力した確認コードが間違っています。再入力してください。";
}その他{
echo "入力した内容は正しいです!";
// キャプチャの検証は正しいです。最終コードはここで実行してください!
}
}
?>