Проблема с reCAPTCHA v3 проверить счет

Попытка ввести в мою форму обратной связи рекаптчу на моем веб-сайте, и у меня возникают проблемы с получением чего-либо, если я не установлю счет 0,0. Даже 0,1 пинает его спамом. Есть много примеров того, как реализовать, и я попробовал несколько из них, но мне не повезло (так как несколько для разных версий, что усложняет нам, новичкам).

В любом случае вот урезанная версия HTML-страницы формы, которую я пытаюсь использовать:

<head>
<script src='https://www.google.com/recaptcha/api.js?render=KEY'></script>
</head>
<body>
<form name="contactform" action="send_form_email.php" method="post">
<div class="input-group">
<span class="input-group-label">Name</span>
<input name="realname" class="input-group-field" type="text" value="Your Name Here" maxlength="50" onFocus="this.value=''">
</div>
<div class="input-group">
<span class="input-group-label">Email</span>
<input name="email" class="input-group-field" type="email" value="Your E-Mail Here" maxlength="50" onFocus="this.value=''">
</div>
<div class="input-group">
<span class="input-group-label">Message</span>
<textarea name="message" rows="10"></textarea>
</div>
<input type="Submit" class="button" value="SEND"><input type="Reset" class="button" value="RESET">
</form>
<script>
$(function(){ //wait for document ready
grecaptcha.ready(function() {
grecaptcha.execute('KEY', {action: 'contactUs'}).then(function(token) {
// Verify the token on the server.
});
});
});
</script>
</body>

Итак, у меня есть форма PHP с именем send_form_email.php, которую я использую, чтобы позаботиться о всей тяжелой работе:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Build POST request:
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = 'SECRET_KEY';
$recaptcha_response = $_POST['g-recaptcha-response'];
// Make and decode POST request:
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response);
$recaptcha = json_decode($recaptcha);

// Take action based on the score returned:
if ($recaptcha->score >= 0.0) {
// This is just where I take care of formatting the email and sending it to me, which is working just fine... well while the score is set to 0.0
}
} else {
// otherwise, let the spammer think that they got their message through
header('Location: success.htm');
exit();
}
}
?>

Вот где я столкнулся с моей проблемой. В приведенном выше коде он установлен на 0.0, и это ЕДИНСТВЕННЫЙ способ, которым электронные письма приходят вообще. Но, конечно, это пропускает спам или реальные сообщения, потому что это в основном отключено. Как я уже сказал, если я установлю его даже на 0,1, он не пройдет проверку счета и никогда не отправит электронное письмо. Я уверен, что это что-то простое, что я пропускаю, или я не передаю информацию правильно или что-то в этом роде, но документация Google не очень полезна. Так что я надеюсь, что кто-то может указать, что я пропустил?

Спасибо!

0

Решение

Наконец-то нашел ответ Вот это дало мне именно то, что я искал. Несколько простых примеров кода, который работает! (почему Google не может этого сделать?) Он не был указан как «принятый» ответ, он ниже того, но принятый ответ просто швыряет вас в мерзавца, который смехотворно смущает новичков.

Вот мой отредактированный код выше:

<head>
<script src='https://www.google.com/recaptcha/api.js?render=YOUR_KEY_HERE'></script>
</head>
<body>
<form name="contactform" action="send_form_email.php" method="post">
<input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">
<input type="hidden" name="action" value="validate_captcha">
<div class="input-group">
<span class="input-group-label">Name</span>
<input name="realname" class="input-group-field" type="text" value="Your Name Here" maxlength="50" onFocus="this.value=''">
</div>
<div class="input-group">
<span class="input-group-label">Email</span>
<input name="email" class="input-group-field" type="email" value="Your E-Mail Here" maxlength="50" onFocus="this.value=''">
</div>
<div class="input-group">
<span class="input-group-label">Message</span>
<textarea name="message" rows="10"></textarea>
</div>
<input type="Submit" class="button" value="SEND"><input type="Reset" class="button" value="RESET">
</form>
<script>
$(function(){ //wait for document ready
grecaptcha.ready(function() {
grecaptcha.execute('YOUR_KEY_HERE', {action: 'contactUs'}).then(function(token) {
// Verify the token on the server.
document.getElementById('g-recaptcha-response').value = token;
});
});
});
</script>
</body>

Затем пересмотренная форма PHP с именем send_form_email.php, которую я использую для выполнения всей тяжелой работы:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Build POST request:
$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify';
$recaptcha_secret = 'YOUR_SECRET_KEY';
$recaptcha_response = $_POST['g-recaptcha-response'];
// Make and decode POST request:
$recaptcha = file_get_contents($recaptcha_url.'?secret='.$recaptcha_secret.'&response='.$recaptcha_response);
$recaptcha = json_decode($recaptcha);

// Take action based on the score returned:
if ($recaptcha->score >= 0.5) {
// Basically if the score is equal to or better than the above, you have a good one and can send your email off and this is just where you would do that
}
} else {
// otherwise, let the spammer think that they got their message through
header('Location: success.htm');
exit();
}
}
?>

У меня сейчас он показывает 0,5 балла, но вы должны, конечно, проверить вашего администратора в Google и посмотреть, какие баллы вы получаете, и отрегулировать по мере необходимости.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]