ホームページ  >  記事  >  バックエンド開発  >  PHPとGDライブラリを使用して動的画像検証コードを作成する方法

PHPとGDライブラリを使用して動的画像検証コードを作成する方法

WBOY
WBOYオリジナル
2023-07-12 08:40:45905ブラウズ

PHP と GD ライブラリを使用して動的な画像検証コードを作成する方法

Web アプリケーションでは、ロボットや悪意のある攻撃者による操作の自動化を防ぐために、ユーザーに検証の入力を求める検証コードがよく使用されます。確認するためのコード。 PHPとGDライブラリを利用することで、動的な画像検証コードを簡単に作成できます。

GD ライブラリは、画像を処理するためのいくつかの関数を提供する PHP の拡張ライブラリです。この記事では、GD ライブラリの機能を使用して、ランダムな文字を含む画像を生成し、それを検証コードとしてユーザーに提示します。

ステップ 1: 単純な PHP Web ページを作成する

まず、動的な画像検証コードを表示するための単純な PHP Web ページを作成する必要があります。 Index.php というファイルを作成し、次のコードをファイルにコピーします。

<!DOCTYPE html>
<html>
<head>
    <title>动态图片验证码</title>
</head>
<body>
    <h1>动态图片验证码</h1>
    <img src="captcha.php" alt="验证码">
    <br>
    <a href="">换一个验证码</a>
</body>
</html>

この単純な HTML ページでは、検証コードを表示するタイトルと画像要素を作成しました。画像の src 属性に captcha.php を設定し、後でこのファイル内に画像を生成してレンダリングします。

ステップ 2: captcha.php ファイルを作成する

次に、captcha.php というファイルを作成し、次のコードをファイルにコピーする必要があります:

<?php
// 启动会话
session_start();

// 创建图像宽度和高度
$width = 200;
$height = 50;

// 创建一个空的图像
$image = imagecreatetruecolor($width, $height);

// 设置背景颜色
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);

// 生成随机的验证码
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$length = mt_rand(4, 6);
$code = '';
for ($i = 0; $i < $length; $i++) {
    $code .= $characters[mt_rand(0, strlen($characters) - 1)];
}

// 将验证码存储在会话中
$_SESSION['captcha_code'] = $code;

// 设置文本颜色
$text_color = imagecolorallocate($image, 0, 0, 0);

// 在图像中绘制验证码
$font = __DIR__ . '/arial.ttf';
imagettftext($image, 30, 0, 10, 40, $text_color, $font, $code);

// 发送图像头信息
header('Content-Type: image/png');

// 将图像呈现给用户
imagepng($image);
imagedestroy($image);
?>

Inこの PHP ファイルを作成するには、まずセッションを開始して、検証コードを保存してアクセスできるようにします。次に、指定された幅と高さの空の画像を作成し、背景色を白に設定しました。次に、ランダムな文字を含む検証コードを生成し、セッションに保存します。

次に、テキストの色を黒に設定し、選択したフォントを使用して画像上に認証コードのテキストを描画します。最後に、画像ヘッダー情報を送信し、画像をユーザーに表示します。

ステップ 3: 検証コードをテストして使用する

これで、ブラウザでindex.php ファイルを開いて、生成された検証コードを表示できます。ページが更新されるたびに、異なる検証コードが生成されます。

フォームでは、ユーザーが入力した確認コードがセッションに保存されている確認コードと一致するかどうかを確認することで、ユーザーの身元を確認できます。

次のコードを使用して、検証コードの正確性を確認できます。

session_start();

if (isset($_POST['submit'])) {
    if ($_POST['captcha'] == $_SESSION['captcha_code']) {
        // 验证码正确,执行所需操作
    } else {
        echo '验证码错误!';
    }
}

ここでは、この記事の内容にはフォーム部分は含まれておらず、検証コードが正しいかどうか。

PHP と GD ライブラリを使用すると、Web アプリケーションを保護するための動的な画像検証コードを簡単に作成できます。これらの検証コードは、実際のユーザーを特定し、自動攻撃を防ぐ上で重要な役割を果たします。

以上がPHPとGDライブラリを使用して動的画像検証コードを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。