Как настроить правильную валидацию reCAPTCHA?

Помогите пожалуйста разобраться с валидацией invisible reCAPTCHA v2. Суть заключается в том, что я для валидации использую jQuery Validation Plugin и большинство инструкций для подключения мне не подходят. Сама капча на сайте появляется, но даже если не проходить эту валидацию, то письмо на почту все равно приходит. Также оповещения об отправке формы появляется вне зависимости от того, появилась форма капчи или нет. Скажите пожалуйста что нужно изменить в коде, для того, чтобы валидация проходила адекватно. Если проблема не в этом коде, а в файле php, то поделитесь пожалуйста таким файлом, который подошел бы для работы с этим плагином.
submitHandler: function() {
            grecaptcha.execute();
            grecaptcha.getResponse();
            $.ajax({
                type: "POST",
                url: "/feedback/process.php",
                data: $("#contactsForm").serialize()
            }).done(function () {
                alert("Форма отправлена!");
                setTimeout(function () {
                    $("#contactsForm").trigger("reset");
                }, 1000);
            });
            return false;
        },


Также дам код php, возможно проблема в нем.

<?php

$secret = '6Lf0o60UAAAAAEZ2tCNPjjIkJmKLPTfwccMu4tLo';

$method = $_SERVER['REQUEST_METHOD'];

//Script Foreach
$c = true;
if ( $method === 'POST' ) {

    $project_name = "WebDevep";
    $admin_email  = "marianvytak@gmail.com";
    $form_subject = "form_subject";

    foreach ( $_POST as $key => $value ) {
        if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
            $message .= "
			" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
				<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
				<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
			</tr>
			";
        }
    }
} else if ( $method === 'GET' ) {

    $project_name = trim($_GET["project_name"]);
    $admin_email  = trim($_GET["admin_email"]);
    $form_subject = trim($_GET["form_subject"]);

    foreach ( $_GET as $key => $value ) {
        if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
            $message .= "
			" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
				<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
				<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
			</tr>
			";
        }
    }
}

$message = "<table style='width: 100%;'>$message</table>";

function adopt($text) {
    return '=?UTF-8?B?'.Base64_encode($text).'?=';
}

$headers = "MIME-Version: 1.0" . PHP_EOL .
    "Content-Type: text/html; charset=utf-8" . PHP_EOL .
    'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
    'Reply-To: '.$admin_email.'' . PHP_EOL;

mail($admin_email, adopt($form_subject), $message, $headers );



// блок проверки invisible reCAPTCHA
require_once (dirname(__FILE__).'/recaptcha/autoload.php');
// если в массиве $_POST существует ключ g-recaptcha-response, то...
if (isset($_POST['g-recaptcha-response'])) {
    // создать экземпляр службы recaptcha, используя секретный ключ
    $recaptcha = new \ReCaptcha\ReCaptcha($secret);
    // получить результат проверки кода recaptcha
    $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
    // результат проверки
    if ($resp->isSuccess()){
        $data['result']=='success';
    } else {
        /* //для отладки:
             $errors = $resp->getErrorCodes();
             $data['error-captcha'] = $errors;
        */
        $data['captcha']='Код капчи не прошёл проверку на сервере!';
        $data['result']='error';
        echo json_encode($data);
        exit();
    }
} else {
    $data['captcha']='Код капчи не прошёл проверку на сервере!';
    $data['result']='error';
    echo json_encode($data);
    exit();
}
// если прозошли ошибки, то завершаем работу и возвращаем ответ клиенту
if ($data['result']!='success') {
    echo json_encode($data);
    exit();
}

?>
  • Вопрос задан
  • 2337 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы