reCaptcha v3 возвращсет ошибку
Установил google captcha на сайт но она работает както не правильно. Иногда проходит проверку, а иногда возвращает ошибку,
{"success": false,"error-codes": ["missing-input-response"]}
не понимаю почему так происходит. Просьба не кидаться помидорами, я только начинающий))
JS
$("select").change(function () {
if ($(this).val() == 'Заявка на желаемую дату доставки') {
$('.calendar').show();
$('.description_f').show();
} else {
$('.calendar').hide();
$('.description_f').hide();
}
});
$(function(){
$(".tel").mask("+7(999)999-99-99");
$.mask.definitions['h']='[A-Fa-f0-9]';
$(".number_order").mask("hhhhhhh-hhh");
});
$(".sendMail").on("click", function () {
//создаем экземпляр класс FormData, тут будем хранить всю информацию для отправки
var formData = new FormData();
//присоединяем поля
let name = $(".name").val().trim();
let email = $(".email_home_form").val().trim();
let tel = $(".tel").val().trim();
let number_order = $(".number_order").val().trim();
let type_appeal = $(".type_appeal").val();
let checkbox_check = $(".checkbox_check").prop('checked');
let calendar = $("#calendar").val();
// ВОТ ТУТ ПРИНИМАЮ ТОКЕН ИЗ ФОРМЫ**************************************************************************
let token = $("#token").val();
// ВОТ ТУТ НЕ ДОКОНЦА ПОНИМАЮ ЧТО ПРОИСХОДИТ, ВЗЯЛ ИЗ ИНСТРУКЦИИ ПО КАПТЧЕ***********************************
grecaptcha.ready(function() {
grecaptcha.execute('6LeyrWUaAAAAAMxakIs0BmN9cQW6uRpk2fnW4_Il', {action: 'homepage'}).then(function(token) {
token = token;
document.getElementById('token').value = token;
});
});
// ***********************************************************************************************************
if (name === '' || email === '' || tel === '' || number_order === '' || !checkbox_check ) {
$('.modal_error').show();
$.each($('.input-box input'), function (i, v) {
if ($(this).val() == '' || !checkbox_check) {
$(this).addClass('empty_field');
} else {
$(this).removeClass('empty_field');
}
});
return false;
}
function isEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
if (!isEmail(email)) {
$('.modal_error_email').show();
return false;
}
formData.append('name', name);
formData.append('email', email);
formData.append('tel', tel);
formData.append('number_order', number_order);
formData.append('type_appeal', type_appeal);
formData.append('calendar', calendar);
// ВОТ ТУТ ДОБАВЛЯЕМ ТОКЕН В ОТПРАВКУ НА СЕРВЕР В ОБРАБОТЧИК
formData.append('token', token);
//отправляем через ajax
$.ajax({
url: "assets/ajax/mail_home.php",
type: "POST",
dataType: "json",
cache: false,
contentType: false,
processData: false,
data: formData, //ОТПРАВЛЯЕМ ВСЕ ДАННЫЕ
beforeSend: function () {
$(".form_contact").prop("disable", true);
$(".main-btn").attr("disabled", true);
$(".loading_mail").show();
},
success: function (data) {
$(".form_contact").trigger("reset");
$(".loading_mail").hide();
$('.input-box input').removeClass('empty_field');
$(".main-btn").attr("disabled", false);
$('.modal_success').show();
console.log(data);
}
});
return false;
});
HTML HTML HTML HTML
<script src="https://www.google.com/recaptcha/api.js?render=6LeyrWUaAAAAAMxakIs0BmN9cQW6uRpk2fnW4_Il"></script>
form action="" method="post" enctype="multipart/form-data" class="contact-one__form form_contact"> <!---->
<div class="row">
<div class="col-lg-6">
<div class="input-box has-feedback nameBlock">
<label for="name" class="control-label ">Имя*</label>
<input required type="text" placeholder="Иван Иванов" name="name" value="" class="name" >
</div>
</div><!-- /.col-lg-6 -->
<div class="col-lg-6">
<div class="input-box">
<label for="email" class="control-label" >Email-адрес*</label>
<input required type="email" placeholder="Email" name="email" value="" class="email_home_form">
</div>
</div><!-- /.col-lg-6 -->
<div class="col-lg-6">
<div class="input-box _req">
<label for="tel" class="control-label">Номер телефона*</label>
<input required type="tel" placeholder="+79997772255" name="tel" value="" class="tel">
</div>
</div><!-- /.col-lg-6 -->
<div class="col-lg-6">
<div class="input-box">
<label for="number_order" class="control-label">№ Сделки*</label>
<input required type="text" placeholder="0000000-я00" name="number_order" value="" class="number_order">
</div>
</div><!-- /.col-lg-6 -->
<div class="col-lg-6">
<div class="input-box">
<label for="message" class="control-label">Тип обращения*</label>
<select class="type_appeal" name="type_appeal">
<option value="Нет типа обращения">Тип обращения</option>
<option value="Заявка на доставку">Оформить доставку</option>
<option value="Заявка на желаемую дату доставки">Выбрать желаемую дату</option>
</select>
</div>
</div>
<div class="col-lg-6 calendar">
<div class="input-box">
<label for="number_order" class="control-label">Дата*</label>
<input type="date" class="calendar" id="calendar" name="calendar" placeholder="Дата" required>
</div>
</div>
<div class="col-lg-12 description_f">
<p>Дата доставки назначается клиенту в соответствии с тарифной сеткой, оплаченной клиентом.
О дате доставки ЗАКАЗЧИК уведомляется дополнительно (за сутки до планируемой даты доставки). Подробнее читайте в <a class="description_p" href="javascript:void(0);">Процесс получения заказов</a>.</p>
</div>
<br>
<div class="col-lg-12">
<div class="input-box"></div>
<div class="checkbox">
<input checked id="checkbox_check" type="checkbox" name="agreement" class="checkbox__input checkbox_check">
<label for="checkbox_check" class="checkbox__label _error"><span>Я даю согласие на обработку персональных данных в соответствии с <a href="[[~15]]" target="_blank">Условиями</a>*</span></label>
</div>
</div>
</div>
<div class="col-lg-12 text-left">
<br>
<input type="hidden" id="token" name="token">
<button class="main-btn sendMail">Отправить</button>
</div>
</div>
</form>
`<?php
$captcha;
if (isset($_POST['token'])) {
$captcha = $_POST['token'];
}
$secretKey = 'тут СЕКРЕТНЫЙ КЛЮЧ';
// $ip = $_SERVER['REMOVE_ADDR'];
$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $secretKey . '&response=' . $captcha;
$response = file_get_contents($url);
$responseKeys = json_decode($response, true);
header('Content-type: application/json');
if ($responseKeys["success"] && $responseKeys["score"] >= 0.1) {
$mail_to = $_POST['email'];
$name = $_POST['name'];
$tel = $_POST['tel'];
$numb = $_POST['number_order'];
$type_appeal = $_POST['type_appeal'];
$calendar = $_POST['calendar'];
$site_url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' .
$_SERVER['HTTP_HOST'];
$mail_manager = '[email protected]';
if (mail($mail_manager, "Сообщение с сайта 'Стекловозов'", " Тип обращения:
$type_appeal \n Желаемая дата доставки: $calendar \n Имя: $name \n Телефон: $tel \n Почта:
$mail_to \n Номер заказа: $numb \n ")) {
$arResult['ok'] = "Y";
} else {
$arResult['no'] = "N";
}
echo json_encode($response);
} else {
echo json_encode($response);
}
die();`