Вопросы, связанные с Google reCaptcha v3
Я хотел интегрировать reCaptcha в веб-сайт и немного запутался, что он работает.
Вот как я настроил:
Добавил этот код в голову:
<script src='https://www.google.com/recaptcha/api.js?render=SITE_KEY></script>
Использовал этот код при загрузке страницы, чтобы получить ответ reCaptcha
<script>
grecaptcha.ready(function() {
grecaptcha.execute('SITE_KEY', {action: 'register'})
.then(function(token) {
jQuery('#recaptcha').val(token);
});
});
</script>
Используйте этот код для подтверждения ответа
$secret = 'SECRET_KEY'; $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['recaptcha']); $responseData = json_decode($verifyResponse); if($responseData->success){ //valid response, move forward }else{ //captcha check failed, throw an error }
Кажется, это работает нормально для меня, и я получаю 0,9 балла за мои запросы.
Проблема: Предположим, что капча не выполнена для действительного запроса пользователя по какой-либо причине (например, ip использовался для рассылки спама или любая другая проверка Google не прошла проверку). Но пользователь легитимен так:
- как пользователь может доказать свою человечность? (как в предыдущей версии флажка)
- если пользователь загружает форму регистрации и выполняет другие действия, пользователь возвращается через некоторое время (например, через 10 минут). Когда пользователь попытается отправить форму, проверка капчи не будет выполнена. (Я попробовал это и получил сообщение об ошибке "timeout-or-duplicate")
- Есть ли способ перезагрузить капчу без перезагрузки страницы?
Пожалуйста, дайте мне знать, как преодолеть эти проблемы?
1 ответ
Добавьте reCAPTCHA V2 с V3. Если V3 не удается. Используйте V2 для проверки пользователя.