ホームページ >バックエンド開発 >PHPチュートリアル >PHP は検証コードの生成と検証を実装します。

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

王林
王林オリジナル
2023-06-18 10:30:341611ブラウズ

PHP は、一般的に使用されるサーバーサイド スクリプト言語であり、強力であるだけでなく、学習や作成が簡単です。 Web サイト開発において、検証コードの生成と検証は非常に重要なセキュリティ対策です。この記事では、PHPを使用して検証コードを生成および検証する方法を紹介します。

1. 確認コードとは何ですか?

CAPTCHA は、「Completely Automated Public Turing Test to Tell Computers and Humans Apart」の略称です。これは、ユーザーがボットではなく本物であることを確認するために使用される一般的なオンライン検証メカニズムです。確認コードは通常、画像または音声で構成されており、ユーザーが本物のユーザーであることを証明するために正しい答えを入力する必要があります。

2. 検証コードの生成

PHP では、検証コード イメージを生成するプロセスは複数のステップに分かれています。まず、ランダムな背景画像を生成し、その上に干渉線とノイズ ポイントを描画して、検証コードの安全性を高める必要があります。次に、GD ライブラリを使用して、画像上にランダムに生成された文字を描画し、最終的に画像を出力します。

以下は、単純な 4 桁の検証コード画像を生成できるサンプルコードです:

<?php
session_start();
header("Content-type: image/png");

$width = 100;
$height = 40;
$length = 4;

// 生成验证码字符串
$chars = "0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
    $str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}

// 保存验证码到Session
$_SESSION["captcha"] = $str;

// 创建图像对象并绘制背景
$im = imagecreatetruecolor($width, $height);
$bgColor = imagecolorallocate($im, 242, 242, 242);
imagefill($im, 0, 0, $bgColor);

// 添加干扰线
$lineColor = imagecolorallocate($im, 200, 200, 200);
for ($i = 0; $i < 6; $i++) {
    imageline($im, 0, mt_rand(0, $height), $width, mt_rand(0, $height), $lineColor);
}

// 添加噪点
$pixelColor = imagecolorallocate($im, 0, 0, 0);
for ($i = 0; $i < 50; $i++) {
    imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pixelColor);
}

// 绘制验证码字符串
$font = 5;
$fontColor = imagecolorallocate($im, 0, 0, 0);
$fontWidth = imagefontwidth($font);
$fontHeight = imagefontheight($font);
$x = ($width - $fontWidth * $length) / 2;
$y = ($height - $fontHeight) / 2;
for ($i = 0; $i < $length; $i++) {
    $char = substr($str, $i, 1);
    imagechar($im, $font, $x + $fontWidth * $i, $y, $char, $fontColor);
}

// 输出图像
imagepng($im);
imagedestroy($im);
?>

3. 検証検証コード

検証コード画像を生成した後、 need フォームの送信時にユーザーが入力した CAPTCHA を検証します。 PHP では、ユーザーが入力した検証コードとセッションに保存された検証コードを比較することで検証できます。

以下は、ユーザーが入力した確認コードを検証し、関連情報を表示できるサンプル コードです:

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $captcha = $_POST["captcha"];
    if (!empty($captcha) && strtolower($captcha) == strtolower($_SESSION["captcha"])) {
        echo "验证码输入正确!";
    } else {
        echo "验证码输入错误!"; 
    }
}
?>
<form method="post">
    <input type="text" name="captcha" placeholder="请输入验证码">
    <img src="captcha.php" onclick="this.src='captcha.php?t='+Math.random()">
    <input type="submit" value="提交">
</form>

このコードでは、画像入力ボックスと「更新」を追加します。フォームボタン。ユーザーが「更新」ボタンをクリックすると、新しいキャプチャ画像がランダムに生成されます。ユーザーが入力した後、「送信」ボタンをクリックすると認証コードが検証されます。

4. 結論

PHP を使用して検証コードを生成および検証すると、ロボットや悪意のある攻撃者による Web サイトへの攻撃を効果的に防ぐことができます。上記のサンプルコードを見ると、検証コードを PHP コードに実装するプロセスも非常に簡単であることがわかり、特に GD ライブラリを使用して画像を生成する場合、コードをより簡潔にすることができます。したがって、PHP コードを使用して検証コードを生成すると、Web サイトとユーザーのプライバシーとセキュリティをより効果的に保護できます。

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

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