PHP を使用して検証コードとグラフィック認識機能を実装する方法

WBOY
リリース: 2023-09-05 10:50:01
オリジナル
1810 人が閲覧しました

如何使用 PHP 实现验证码和图形识别功能

PHP を使用して検証コードとグラフィック認識関数を実装する方法

検証コード (キャプチャ) は、ユーザーが本物であることを確認するために使用される一般的なオンライン検証メカニズムです。自動化されたスクリプトやマルウェアではありません。認証コードはWebサイトの登録時やログイン時、パスワードリセット時などに頻繁に使用されますが、認証コードを識別することでロボットによる悪意のある攻撃やスパムメッセージの送信を防ぐことができます。この記事では、PHPを使用して検証コードとグラフィック認識機能を実装する方法を紹介します。

  1. 検証コードの生成

まず、ユーザーが識別できるように検証コード イメージを生成する必要があります。以下は、数字と文字で構成される確認コードを生成する単純な PHP 関数です。

<?php
session_start();

function generateCaptcha($length = 4) {
    $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    $captcha = '';
    for ($i = 0; $i < $length; $i++) {
        $captcha .= $chars[rand(0, strlen($chars) - 1)];
    }
    $_SESSION['captcha'] = $captcha; // 将验证码保存到 session 中
    return $captcha;
}
ログイン後にコピー
  1. 確認コード画像の表示

確認コードを生成した後、ユーザーが入力できるように Web ページに表示する必要があります。以下は、キャプチャ画像を生成してブラウザに表示する単純な PHP スクリプトです。

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

$captcha = generateCaptcha(); // 生成验证码

$width = 80; // 图像宽度
$height = 40; // 图像高度

$image = imagecreate($width, $height); // 创建图像

$background = imagecolorallocate($image, 255, 255, 255); // 设置图像背景色为白色
$textColor = imagecolorallocate($image, 0, 0, 0); // 设置文本颜色为黑色

// 将验证码绘制到图像上
imagestring($image, 5, 10, 12, $captcha, $textColor);

imagepng($image); // 输出图像
imagedestroy($image); // 销毁图像
?>
ログイン後にコピー
  1. 入力された確認コードを確認してください

ユーザーはブラウザに確認コードの画像が表示されたら、操作を続行するには確認コードを入力する必要があります。以下は、ユーザーが入力した確認コードが正しいことを確認するための簡単な PHP 関数です。

<?php
session_start();

function validateCaptcha($input) {
    if (isset($_SESSION['captcha'])) {
        $captcha = $_SESSION['captcha'];
        unset($_SESSION['captcha']); // 验证码只能使用一次
        return strtolower($input) === strtolower($captcha);
    }
    return false;
}
ログイン後にコピー
  1. グラフィック認識機能

検証コード画像には、自動認識を妨げるために複雑な歪み、干渉、その他の効果が使用される場合があります。この場合、パターン認識技術を使用して検証コードを自動的に識別できます。以下は、CAPTCHA 画像を認識する簡単な PHP 関数です。

<?php
function recognizeCaptcha($imagePath) {
    $image = imagecreatefrompng($imagePath);
    $width = imagesx($image);
    $height = imagesy($image);

    $captcha = '';
    for ($i = 0; $i < $width; $i++) {
        $color = imagecolorat($image, $i, $height / 2);
        $r = ($color >> 16) & 0xFF;
        $g = ($color >> 8) & 0xFF;
        $b = $color & 0xFF;
        $brightness = ($r + $g + $b) / (3 * 255);
        $captcha .= ($brightness < 0.5) ? '1' : '0';
    }

    imagedestroy($image);
    return $captcha;
}
ログイン後にコピー

上記は、PHP を使用して検証コードとグラフィック認識機能を実装する簡単な例です。 CAPTCHA コードの生成、CAPTCHA 画像の表示、ユーザー入力の検証、パターン認識テクノロジーの使用により、当社 Web サイトのセキュリティとユーザー エクスペリエンスを向上させることができます。もちろん、実際のアプリケーションには、より複雑な検証コードやパターン認識アルゴリズムが含まれる場合があり、特定の状況に応じて調整および最適化する必要があります。

以上がPHP を使用して検証コードとグラフィック認識機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート