AJAX форма и reCAPTCHA v2

Задача:

Как подключить капчу от Google reCAPTCHA v2 для AJAX формы


AJAX форма и reCAPTCHA v2

Решение:
  1. Получить API ключи по ссылке
  2. В подвал код:
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src='https://www.google.com/recaptcha/api.js?hl=ru'></script>
  3. Форма:
    <form id="myform">
        <input type="text" name="text" value="Тест">
        <div class="g-recaptcha" data-sitekey="_____КЛЮЧ_____"></div>
        <button type="submit">Отправить</button>
    </form>
    
    <div class="results"></div>
    
    <script>
    $("#myform").submit(function(e) {
        e.preventDefault();
        $.ajax({
                type: "POST",
                url: "ajax.php",
                data: $("#myform").serialize(),
                success: function(data) {
                    $('.results').html(data);
                }
                });
    
    });
    </script>
  4. Не забыть подключить библиотеку recaptchalib-v2.php в ajax.php
  5. Файл ajax.php
    <?
    require_once($_SERVER["DOCUMENT_ROOT"].'/recaptchalib-v2.php');
    
    $secret = "_____СЕКРЕТНЫЙ_КЛЮЧ_____";
    $resp = null;
    $error = null;
    $reCaptcha = new ReCaptcha($secret);
    // Was there a reCAPTCHA response?
    if ($_POST["g-recaptcha-response"]) {
        $resp = $reCaptcha->verifyResponse(
            $_SERVER["REMOTE_ADDR"],
            $_POST["g-recaptcha-response"]
        );
    }
    
    if($resp != null && $resp->success)
    {
        echo "reCAPTCHA пройдена!<br>Отправляем форму!";
        echo $_POST['text'];
    }
    else
    {
        echo "Ошибка reCAPTCHA";
    }
    ?>
Создано: 16.04.2018
Просмотров: 93