ホームページ  >  記事  >  バックエンド開発  >  PHP は画像検証コードの生成と検証を実装します

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

PHPz
PHPzオリジナル
2023-09-13 11:30:39865ブラウズ

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

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

Web サイト開発では、悪意のあるマシンによる攻撃や自動登録を防ぐために、画像検証コードを使用することがよくあります。確認する。この記事では、PHP を使用して画像検証コードを生成および検証する方法と、具体的なコード例を紹介します。

  1. 画像検証コードの生成

画像検証コードを生成する鍵は、ランダムな検証コード文字列を生成し、それを画像上に描画することです。以下は、画像検証コードを生成するサンプル コードです。

<?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
session_start();

// 获取用户输入的验证码字符串
$user_input = $_POST['captcha'];

// 获取保存在session中的验证码字符串
$server_code = $_SESSION['captcha'];

// 验证用户输入的验证码与保存的验证码是否一致
if (strcasecmp($user_input, $server_code) === 0) {
    // 验证码正确,执行相应的操作
    // ...
    echo "验证码正确";
} else {
    // 验证码错误,提示用户重新输入
    echo "验证码错误";
}
?>

上記のコードでは、まず

session_start 関数を使用してセッションを開き、次に ## を通じてユーザーを取得します。 #$_POST スーパー グローバル配列 検証コード文字列を入力し、$_SESSION スーパー グローバル配列を使用して、セッションに保存されている検証コード文字列を取得します。最後に、strcasecmp 関数を使用して 2 つの文字列が等しいかどうかを比較します。等しい場合は、検証コードが正しいことを意味し、対応する操作が実行されます。等しくない場合は、これは、確認コードが間違っているため、ユーザーに再入力を求めるメッセージが表示されることを意味します。 上記の 2 つのコードにより、イメージ検証コードを生成して検証できます。画像検証コードを生成するコードを、

captcha.php

などの別のファイルとして保存できます。検証コードを生成する必要がある場合は、そのファイルに直接アクセスできます。画像検証コードを検証するためのコードは、特定のフォーム送信処理ページに配置できます。 この記事のサンプル コードが、イメージ検証コードの生成と検証に役立つことを願っています。もちろん、実際のアプリケーションでは、干渉線の追加や検証コードの暗号化など、セキュリティ対策を追加する必要がある場合もあります。

以上がPHP は画像検証コードの生成と検証を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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