現在の位置: ホーム> 最新記事一覧> PHPを使用して画像検証コードを生成および検証する方法

PHPを使用して画像検証コードを生成および検証する方法

M66 2025-07-01

PHPは画像検証コードの生成と検証を実現します

ウェブサイト開発プロセス中、自動化された悪意のある攻撃や自動登録を防ぐために、画像検証コードを使用して検証します。この記事では、PHPを使用して画像検証コードを生成および検証する方法を示し、関連するコードの例を提供します。

画像検証コードを生成します

画像検証コードを生成するコアは、ランダム検証コード文字列を生成し、画像に描画することです。これがPHPコードの例です。

 <?php
session_start();

// 画像サイズを宣言します
$image_width = 100;
$image_height = 40;

// 画像リソースを作成します
$image = imagecreatetruecolor($image_width, $image_height);

// 背景色を生成します
$bg_color = imagecolorallocate($image, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255));
imagefill($image, 0, 0, $bg_color);

// 検証コード文字列を生成します
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789';
$code = '';
for ($i = 0; $i < 4; $i++) {
    $code .= $chars[mt_rand(0, strlen($chars) - 1)];
}

// 確認コード文字列を保存しますsession真ん中,その後の検証用
$_SESSION['captcha'] = $code;

// 検証コードテキストを描画します
$font_file = 'path_to_your_font.ttf'; // 独自のフォントファイルパスに置き換えます
$text_color = imagecolorallocate($image, 0, 0, 0); // テキストの色は黒です
imagettftext($image, 20, 0, 10, 30, $text_color, $font_file, $code);

// 出力画像
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>

上記のコードは、最初に、ImageCreateTrueColor関数を介して指定された幅と高さを持つ画像リソースを作成します。次に、背景色はImageColorAllocate関数を介して生成され、画像全体が満たされます。最後に、[ImagetTftext関数を使用して[検証]コード文字列が画像に描画され、最後に生成された画像はImagePNG関数を使用して出力されます。

画像検証コードを確認します

画像検証コードを検証するときは、ユーザーが入力した検証コードをセッションで保存した検証コードと比較する必要があります。以下は、検証コードを確認するためのPHPコードの例です。

 <?php
session_start();

// ユーザーが入力した検証コード文字列を取得します
$user_input = $_POST['captcha'];

// 保存してくださいsession真ん検証コード文字列
$server_code = $_SESSION['captcha'];

// ユーザーが入力した検証コードが保存された検証コードと一致していることを確認します
if (strcasecmp($user_input, $server_code) === 0) {
    // 検証コードは正しいです,対応する操作を実行します
    echo '検証コードは正しいです';
} else {
    // 検証コードエラー,ユーザーに再入力を促します
    echo '検証コードエラー';
}
?>

上記のコードでは、最初にセッションを有効にし、次に$ _POSTアレイを介してユーザーが入力した検証コードを取得し、$ _Sessionアレイを介してセッションに保存されている検証コード文字列を取得します。 STRCASECMP関数を介して2つの文字列を比較します。それらが一致する場合、それは検証コードが正しく、対応する操作を実行できることを意味します。それらが一致しない場合、検証コードが間違っていることを促します。

要約します

上記の2つのPHPコードを通じて、画像検証コードの生成および検証機能を正常に実現できます。検証コードを生成するコードは、captcha.phpなどの別のファイルとして保存できます。これは、要求時にファイルにアクセスするだけで生成できます。検証コードを検証するコードは、フォーム送信の処理ページに配置できます。

実際のアプリケーションでは、上記の機能に加えて、干渉線の追加、暗号化された検証コードなど、必要に応じていくつかのセキュリティ対策を追加することもできます。