Google ReCaptcha未发布“g-recaptcha-response”

2022-08-30 19:08:07

这个问题以前被问过:新的Google ReCaptcha没有发布/接收“g-recaptcha-response” - 但没有正确的答案。

我有与他完全相同的设置,但代码在这里失败了:

if(!$captcha){
   exit;
}

所以似乎是空的。$captcha=$_POST['g-recaptcha-response']

新的谷歌验证码与复选框服务器端php =这里的第二个答案似乎也不起作用。

有谁知道为什么会发生这种情况?


答案 1

我遇到了这个问题,发现我的窗体在 DOM 中过早地关闭,因为它位于表内。ReCaptcha 设置一个 display:none g-recaptcha-response textarea,稍后在您完成验证码时填充数据。它似乎在寻找div所处形式的子级,因此找不到它最初创建的g-recaptcha-response。我把表格放在桌子周围,之后它工作得很好。


答案 2

检查在向用户显示表单的部分是否存在以下内容:

  1. 介于 和 之间 :<form></form>

    <div class="g-recaptcha" data-sitekey="your_public_key"></div>

  2. 在结束标记之前:</head>

    <script src='https://www.google.com/recaptcha/api.js'></script>

  3. 检查您的表单是否用作方法,...post

    <form method="post" ...>

如果这些是正确的,至少应该有一些来找你。首先在生成的客户端 html 代码中检查这些代码(在许多浏览器中,通过在查看用户表单时按 +) - 而不是您的服务器端代码 - 使用这些知识更容易。然而,如果所有这些即使在客户身上也都到位,那么这将是一个艰难的^^$_POST['grecaptcha-response']StrgU


推荐