検証コード(CAPTCHA)は、ユーザーのアイデンティティを検証するために広く使用されているテクノロジーであり、通常、ユーザーが画像内の文字や画像を識別することを要求することにより、ロボットの自動化を回避します。この記事では、PHPを介して検証コード画像を生成し、Webページに表示する方法を詳細に紹介します。
まず、captcha.phpという名前のPHPファイルを作成し、ファイル拡張子が.phpであることを確認する必要があります。
PHPスクリプトでは、いくつかの変数を定義して、検証コード画像のサイズ、数、および可能な文字セットを設定する必要があります。これがコードの例です。
$width = 120; // 検証コード画像の幅
$height = 40; // 検証コード画像の高さ
$characters = 4; // 検証コード文字の数
$possibleChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
次に、空白の画像を作成し、背景色、テキスト色、フォントなどの基本的なプロパティを設定します。コードは次のとおりです。
$image = imagecreatetruecolor($width, $height);
$backgroundColor = imagecolorallocate($image, 255, 255, 255); // 背景色:白
$textColor = imagecolorallocate($image, 0, 0, 0); // 文字色:黒
imagefill($image, 0, 0, $backgroundColor);
$font = 'path/to/your/font.ttf'; // フォントファイルパス
次に、検証コード文字をランダムに生成し、画像に描画する必要があります。 PHPは、乱数を生成する機能を提供し、文字配列から文字を選択するために使用できます。これがサンプルコードです:
$captcha = '';
for ($i = 0; $i < $characters; $i++) {
$randomChar = $possibleChars[rand(0, strlen($possibleChars) - 1)];
$captcha .= $randomChar;
$x = ($width / $characters) * $i + 10; // 文字位置
$y = $height / 2 + 15; // テキストセンターオフセット
imagettftext($image, 20, 0, $x, $y, $textColor, $font, $randomChar);
}
その後の検証のために、生成された検証コードをPHPのセッションに保存する必要があります。以下はコードです。
session_start();
$_SESSION['captcha'] = $captcha;
最後に、画像出力ヘッダー情報を設定し、検証コードイメージをユーザーに表示する必要があります。
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
上記の手順を通じて、簡単な検証コードシステムを正常に実装しました。ページが更新されるたびに、ユーザーは新しい検証コードイメージを表示し、自動攻撃を防ぐ機能が向上します。実際のアプリケーションでは、ユーザーのIDを確認するために、セッションのストレージでユーザーが入力した検証コードを比較できます。
これは、ニーズに応じてさらに拡張および最適化できる基本的なPHP検証コードの実装例です。