Google ReCaptcha没有发布'g-recaptcha-response'

fro*_*sty 17 php recaptcha

之前有人问过这个问题:新的Google ReCaptcha没有发布/接收'g-recaptcha-response' - 但是没有正确答案.

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

if(!$captcha){
   exit;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 17

我遇到了这个问题,发现我的表单在DOM中过早关闭,因为它在表中.ReCaptcha设置一个显示:无g-recaptcha-response textarea,然后在完成验证码时填写数据.它似乎寻找div所处形式的孩子,因此无法找到它最初创建的g-recaptcha-response.我把表格放在桌子周围,之后就可以了.


Lev*_*ite 6

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

  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" ...>

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


zed*_*zed 5

今天我在g-recaptcha-response同事的网站上遇到了同样的问题(提交时没有价值)。结果是该标签<form错误地嵌套在开始标签之后<table(不在 td 内,而是直接在 之后<table)。
这导致了这个问题。以包装 的方式
移动标签后,提交后的值被正确发布到服务器端。formtableg-recaptcha-response