Javascript Recaptcha 3实施问题

Javascript Recaptcha 3实施问题,javascript,php,Javascript,Php,每当我提交表单时,我为无效令牌设置的错误消息总是激发,即使存在有效令牌 <script src="https://www.google.com/recaptcha/api.js?render=SITE_KEY"></script> <script> grecaptcha.ready(function () { grecaptcha.execute('SITE_KEY', { action: 'contact' }).then(function (tok

每当我提交表单时,我为无效令牌设置的错误消息总是激发,即使存在有效令牌

<script src="https://www.google.com/recaptcha/api.js?render=SITE_KEY"></script>
<script>
grecaptcha.ready(function () {
    grecaptcha.execute('SITE_KEY', { action: 'contact' }).then(function (token) {
        var recaptchaResponse = document.getElementById('recaptchaResponse');
        recaptchaResponse.value = token;
    });
});
如果我使用console.log,我可以看到令牌,因此没有问题

阿贾克斯:

PHP

我不知道它是否失败,因为在我的google帐户中,我将域设置为mydomain.com,但表单实际上位于mydomain.com/subdirectory


设置验证码时,我无法添加子目录。

您可能需要在PHP设置中启用
允许url\u fopen
,以便
文件\u获取\u内容
正常工作。

您能看到完整的recaptcha响应吗?通常,这会提到您在recaptcha中的域是否设置错误。它在控制台中显示null。但是如果我提醒表单,我可以看到隐藏的captcha字段有一个长值。Ajax有什么问题吗?(添加到原始问题)另外,如果在使用json_decode之前我console.log响应,我会得到'false',您需要在php设置中搜索
allow_url_fopen
而不是file_get_内容,因为这是实际的函数,而不是php设置。这解决了我的问题。我打开了它,现在它工作了。请将此作为答案添加,以便我可以接受:)
 <input type="hidden" name="recaptcha_response" id="recaptchaResponse">
var form = $('#supportForm').serialize();
    $.ajax({
        url: 'validate.php',
        type: 'POST',
        dataType: 'json',
        data: form,
       //
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = 'SECRET_KEY';

$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $_POST['recaptcha_response']);
$recaptcha = json_decode($recaptcha);


  if(!$recaptcha->success) {
        $message .= "'Robot verification passed, please try again";
   }