Невидимая проверка ReCaptcha в Ajax форме с JQuery плагином проверки - PullRequest
0 голосов
/ 17 марта 2020

Здравствуйте. У меня проблема с невидимой речевой кодировкой, потому что я не могу проверить большинство запросов.
Я много искал в форуме, но пока не нашел решения.
Я использую JQuery Плагин валидации для проверки формы и AJAX.
Я знаю, что это глупый вопрос но мне очень нужна твоя помощь, чтобы увидеть, чего мне не хватает.
Любая помощь будет очень признательна.
У меня есть форма под названием «контакт», и в конце ее я получаю свою заявку

  <button class="btn btn-lg btn-light g-recaptcha" data-sitekey="SITE-KEY"
  data-callback="onSubmit">Send.</button>

Тогда моя JQuery функция onSubmit:

function onSubmit(token) {
    if (($('#contact')).valid()) {
        $('#contact').submit();
    }
    else {
        $("#contact").addClass("shake animated"), function() {
            $(this).removeClass();
        });
        grecaptcha.reset();
    }
}

AJAX находится в конце JQuery настроек проверки, как показано здесь:

$(document).ready(function() {
    $(function () {
        $.validator.setDefaults({
            errorClass: 'help-block'
        });
        $("#contact").validate({
            rules: {
                name: {
                    required: true,
                    lettersonly: true
                }
            },
            submitHandler: function () {
                $.ajax({
                    type: "POST",
                    url: "process.php",
                    data: $('#contact').serialize(),
                    success: function () {
                        $("#fields").prop('disabled', true);
                    },
                    error: function () {
                        $('#msgSubmit').html("Error");
                    }
                });
                return false;
            }
        });
        });
    });

И моя проверка на стороне сервера:

    <?php
$url = "myurl";
if (isset($_SERVER['REQUEST_METHOD']) && ($_SERVER['REQUEST_METHOD']) == 'POST') {
    if(@isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER']==$url) {
        $res = post_captcha($_POST['g-recaptcha-response']);
        if (!$res['success']) {
            echo '<br><p>Error.</p><br>';
        } else {
            echo 'OK';
        }
    }
} else {
    die();
}

function post_captcha($user_response) {
    $fields_string = '';
    $fields = array(
        'secret' => 'PRIVATE-KEY',
        'response' => $user_response
    );
    foreach($fields as $key=>$value)
        $fields_string .= $key . '=' . $value . '&';
    $fields_string = rtrim($fields_string, '&');

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://www.google.com/recaptcha/api/siteverify');
    curl_setopt($ch, CURLOPT_POST, count($fields));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);

    $result = curl_exec($ch);
    curl_close($ch);

    return json_decode($result, true);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...