ホームページ > バックエンド開発 > PHPチュートリアル > PHP を使用してサーバー側で Google reCAPTCHA v3 を検証する方法は?

PHP を使用してサーバー側で Google reCAPTCHA v3 を検証する方法は?

Linda Hamilton
リリース: 2024-11-01 09:44:43
オリジナル
486 人が閲覧しました

How to Validate Google reCAPTCHA v3 on the Server Side with PHP?

PHP のサーバー側で Google reCAPTCHA v3 を検証する

背景:

Google reCAPTCHA v3 は、スパムや悪用を防ぐために使用される一般的な CAPTCHA システム。機械学習モデルに依存してユーザーの行動を分析し、単純なチャレンジ/レスポンス メカニズムではなくリスク分析スコアを提供します。

サーバー側検証:

検証するにはPHP を使用してサーバー側で reCAPTCHA v3 を使用するには、次の手順を実行する必要があります:

  1. POST データの取得:

    • クライアント側のフォーム送信から受信した POST データの「g-recaptcha-response」値。
  2. リクエスト パラメータの設定:

    • 秘密キー、「g-recaptcha-response」値、およびクライアントの IP アドレスを配列で指定します。
  3. HTTP リクエストの準備:

    • 指定されたリクエスト メソッド、ヘッダー、および POST データを使用して HTTP コンテキストを作成します。
  4. リクエストの実行:

    • HTTP コンテキストで file_get_contents() を使用して、リクエストを reCAPTCHA の API に送信します。
  5. 応答の解析:

    • reCAPTCHA から受信した JSON 応答をデコードし、「success」パラメーターを抽出します。
  6. Validate reCAPTCHA:

    • 「success」が「true」の場合は「true」を返し、それ以外の場合は「false」を返します。

コード例:

<code class="php">function isValid()
{
    try {
        $url = 'https://www.google.com/recaptcha/api/siteverify';
        $data = ['secret'   => '[YOUR SECRET KEY]',
                 'response' => $_POST['g-recaptcha-response'],
                 'remoteip' => $_SERVER['REMOTE_ADDR']];

        $options = [
            'http' => [
                'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
                'method'  => 'POST',
                'content' => http_build_query($data)
            ]
        ];

        $context  = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
        return json_decode($result)->success;
    }
    catch (Exception $e) {
        return null;
    }
}</code>
ログイン後にコピー

使用法:

単に isValid() 関数を呼び出して、クライアント側から受け取った reCAPTCHA トークンを検証します。

<code class="php">if (isValid()) {
    // User passed reCAPTCHA
} else {
    // User failed reCAPTCHA
}</code>
ログイン後にコピー

以上がPHP を使用してサーバー側で Google reCAPTCHA v3 を検証する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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