Я хотел интегрировать 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»)
- Есть ли способ перезагрузить капчу без перезагрузки страницы?
Пожалуйста, дайте мне знать, как преодолеть эти проблемы?