画像検証コードは、ウェブサイトの登録、ログイン、コメント、その他のシナリオで広く使用されており、フォームセキュリティを改善し、自動スクリプト攻撃に抵抗する重要な手段です。この記事では、単純なPHP画像検証コードシステムを段階的に実装し、PHPのGDグラフィックライブラリに依存して画像生成を完了し、セッションメカニズムを組み合わせて検証コード検証を完了します。
開始する前に、サーバー環境でGDライブラリが有効になっていることを確認してください。 GDライブラリは、グラフィック画像を処理するPHPの拡張モジュールであり、画像を動的に作成するために使用されます。 phpinfo()を実行することにより、拡張機能が有効かどうかを確認できます。
captcha.phpという名前のファイルを作成し、GDライブラリを使用して乱数を持つ画像を動的に生成し、その後の検証のために生成された検証コード値を$ _Sessionに保存します。
以下は、検証コード画像生成のコードです。
<?php
session_start();
// ランダムな4桁の検証コードを生成します
$code = rand(1000, 9999);
// 検証コードをセッションに保存します
$_SESSION['captcha_code'] = $code;
// 画像リソースを作成します
$image = imagecreatetruecolor(120, 40);
// 背景色を白に設定します
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// 干渉点を追加します
for ($i = 0; $i < 100; $i++) {
$point_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
imagesetpixel($image, rand(0, 120), rand(0, 40), $point_color);
}
// テキストの色を黒に設定します
$text_color = imagecolorallocate($image, 0, 0, 0);
// 検証コードテキストを描画します(フォントパスが正しいことを確認してください)
imagettftext($image, 20, 0, 30, 30, $text_color, 'path/to/font.ttf', $code);
// ブラウザに画像を出力します
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
検証コード画像をフロントエンドページに埋め込むには、次の方法を使用してcaptcha.phpを呼び出すことができます。
<img src="captcha.php" alt="検証コード">
画像をクリックして検証コードをリロードしてユーザーエクスペリエンスを強化するなど、画像に更新機能を追加することをお勧めします。
ユーザーがフォームを送信すると、ユーザーが入力した検証コードをセッションに保存された値と比較して、入力が正しいかどうかを判断する必要があります。これが確認コードの例です。
<?php
session_start();
if (isset($_POST['captcha'])) {
$user_input = $_POST['captcha'];
if ($user_input == $_SESSION['captcha_code']) {
// 検証は成功しました,対応する操作を実行します
} else {
// 検証に失敗しました,再入力するように促します
}
}
?>
このロジックは、確認操作が必要なユーザー登録、ログイン検証など、あらゆる形式のシナリオに適しています。
このチュートリアルを通して、PHPおよびGDライブラリを使用して画像検証コードを実装する基本的な方法を学びました。このソリューションは、ランダム文字を含む画像を生成し、セッションメカニズムを組み合わせて、ほとんどの中小プロジェクトに適したサーバー側の検証を完了するように設計されています。
これに基づいて、さらなる拡張を行うことができます。たとえば、次のようになります。
検証コード文字タイプ(番号 +文字)を追加する
グラフィック干渉線を追加します
フォントサイズと角度を動的に生成します
検証コードの有効期限などを追加します。
検証コードの合理的な設計は、悪意のある攻撃を防ぐのに役立つだけでなく、システムの全体的なセキュリティを改善します。