首頁 >後端開發 >php教程 >如何使用 PHP 在伺服器端驗證 Google reCAPTCHA v3?

如何使用 PHP 在伺服器端驗證 Google reCAPTCHA v3?

Linda Hamilton
Linda Hamilton原創
2024-11-01 09:44:43467瀏覽

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

在PHP 的伺服器端驗證Google reCAPTCHA v3

背景:

Google reCAPTCHA v3 是用來防止垃圾郵件 v3和濫用的流行驗證碼系統。它依靠機器學習模型來分析使用者行為,並提供風險分析分數,而不是簡單的挑戰回應機制。

伺服器端驗證:

進行驗證在伺服器端使用PHP 的reCAPTCHA v3,您需要執行下列步驟:

  1. 檢索POST資料:

    • 擷取從客戶端表單提交收到的 POST 資料中的「g-recaptcha-response」值。
  2. 設定請求參數:

    • 在陣列中指定您的金鑰、“g-recaptcha-response”值和客戶端的IP 位址。
  3. 準備 HTTP 要求:

    • 使用指定的請求方法、標頭和 POST 資料建立 HTTP 上下文。
  4. 執行請求:

    • 使用 file_get_contents() 與 HTTP 上下文將請求傳送到 reCAPTCHA 的 API。
  5. 解析回應:

    • 解碼從 reCAPTCHA 收到的 JSON 回應並提取「成功」參數。
  6. 驗證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>

用法:

用法:
<code class="php">if (isValid()) {
    // User passed reCAPTCHA
} else {
    // User failed reCAPTCHA
}</code>
用法:用法:用isValid() 函數即可驗證從客戶端收到的reCAPTCHA 令牌。

以上是如何使用 PHP 在伺服器端驗證 Google reCAPTCHA v3?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn