首页  >  文章  >  后端开发  >  如何使用 PHP 在服务器端验证 Google reCAPTCHA v3?

如何使用 PHP 在服务器端验证 Google reCAPTCHA v3?

Linda Hamilton
Linda Hamilton原创
2024-11-01 09:44:43393浏览

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

在 PHP 的服务器端验证 Google reCAPTCHA v3

背景:

Google reCAPTCHA 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>

用法:

只需调用 isValid() 函数即可验证从客户端收到的 reCAPTCHA 令牌。

<code class="php">if (isValid()) {
    // User passed reCAPTCHA
} else {
    // User failed reCAPTCHA
}</code>

以上是如何使用 PHP 在服务器端验证 Google reCAPTCHA v3?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn