Я создал простой сайт для кого-то. Этот сайт содержит контактную форму, которая защищена с помощью reCaptcha (невидимо).
Все работало нормально, но недавно владелец связался со мной, что некоторые из ее клиентов жалуются на контактную форму, "определяющую их как ботов"когда они отправляют это.
Я проверил, могу ли я воспроизвести проблему. Я протестировал его в Firefox, Chrome, Edge и даже Internet Explorer на 3 разных устройствах, и в 100% случаев он работал отлично .
У кого-нибудь еще были проблемы с reCaptcha и он мог бытьможете мне помочь?
Вот как я реализовал reCaptcha:
Я загрузил API reCaptcha с помощью своего ключа:
<script src="https://www.google.com/recaptcha/api.js?render=<myKey>"></script>
Затем я его инициализировал:
grecaptcha.ready(function(){
grecaptcha.execute("<myKey>").then(function(token){
var recaptchaResponse = document.getElementById('recaptchaResponse');
recaptchaResponse.value = token;
});
});
В моей форме я получил скрытый элемент ввода с ответом reCaptcha:
<input type="hidden" name="recaptcha_response" id="recaptchaResponse">
Затем с помощью AJAX я вызываю php-файл для почты:
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: {
// all the data
captcha: document.getElementById('recaptchaResponse').value
}
});
И, наконец, PHP:
$secret = "<myKey>";
$response = $_POST["captcha"];
$verify = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$secret}&response={$response}");
$captcha_success = json_decode($verify);
if($captcha_success->success==false){
echo "we don't like bots here";
} else if($captcha_success->success==true){
// the mail function stuff
}
Кто-нибудь может представить, в каком случае может произойти сбой проверки?