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

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

Linda Hamilton
Linda Hamilton原创
2024-10-31 13:18:02944浏览

How to Verify Google reCAPTCHA v3 on the Server Side in PHP?

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

问题:您已经实现了 Google reCAPTCHA v3,并在前端,但您在服务器端验证它时遇到困难。即使验证码无效,表单也会被提交。

解决方案:

要在服务器端有效处理 Google reCAPTCHA v3 验证,使用 POST 请求至关重要。这是一个解决方案:

<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() 函数旨在使用 POST 请求验证 reCAPTCHA v3。
  • 它将密钥、验证码响应和用户的 IP 地址发送到 Google 的 API。
  • 该函数解析 API 的响应,如果验证码有效则返回 true,如果无效则返回 false,如果错误则返回 null发生在请求期间。

用法:

在您的代码中,只需编写:

if (isValid()) {
  // The user has passed the captcha validation.
} else {
  // The user has failed the captcha validation.
}

注意: 确保将 [YOUR SECRET KEY] 替换为提供的代码片段中的实际 reCAPTCHA 密钥。

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

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