Как проверить, если пользователь уже проверил флажок Google Recaptcha

Если вы новичок в службе Google Recaptcha, вы, возможно, уже заметили, что если вы отправляете свою форму в обычном режиме, а пользователь не установил флажок recaptcha, форма будет отправлена ​​без проверки, если пользователь уже заполнил поле рекапчи.

Это происходит потому, что это поле формы (добавляемое через javascript строкой Google Recaptcha) всегда пусто, если пользователь не проверит его (это означает, что не существует, пока пользователь не решит его).

Чтобы предотвратить такое поведение, согласно документации API recaptcha API Google, когда конечный пользователь решает reCAPTCHA, в HTML будет заполнено новое поле (g-recaptcha-response).

Вы можете проверить ответ пользователя одним из трех способов (два из них на стороне клиента):

Использование обратного вызова

Добавьте новый параметр в ваш виджет reCAPTCHA (обратный вызов данных):


Параметр обратного вызова данных ожидает имя выполняемой функции, в предыдущем виджете имя функции обратного вызова является обратным вызовом, поэтому функция должна называться обратным вызовом:

function callback(){
console.log("The user has already solved the captcha, now you can submit your form.");
}

Убедитесь, что ответ уже отправлен

Проверьте результат ответа grecaptcha:

if(grecaptcha.getResponse().length !== 0){
console.log("The captcha has been already solved");
}

grecaptcha объект доступен в окне, так как файл gap recaptcha api.js загружен в ваш документ.

Проверьте сторону сервера

Как было сказано ранее, значение поля g-recaptcha-response будет "" (пусто), если пользователь не решил капчу, поэтому просто проверьте на языке вашего сервера, является ли поле формы пустым или нет.

Пример использования PHP (обратите внимание, что метод может отличаться от POST в зависимости от вашей формы):

if($_POST["g-recaptcha-response"] != ''){
// The user solved the recaptcha, now verify it if is a robot using the API.
}

Повеселись

Ссылка на основную публикацию
Adblock
detector