Si es nuevo con el servicio Google Recaptcha, es posible que ya haya notado que si envía su formulario normalmente y el usuario no ha resuelto la casilla de verificación recaptcha, el formulario se enviará sin verificar si el usuario ya ha llenado el campo recaptcha.
Esto sucede porque este campo de formulario (agregado a través de javascript por la cadena Google Recaptcha) siempre está vacío a menos que el usuario lo verifique (eso significa que no existe hasta que el usuario lo resuelve).
Para evitar este comportamiento, de acuerdo con la documentación de Google recaptcha api, cuando un usuario final resuelve un reCAPTCHA, se completará un nuevo campo (g-recaptcha-response) en HTML.
Puede verificar la respuesta del usuario de una de estas tres formas (dos de ellas del lado del cliente):
Usando una devolución de llamada
Agregue un nuevo parámetro a su widget reCAPTCHA (data-callback):
<div class="g-recaptcha" data-sitekey="your_site_key" data-callback="callback"></div>
El parámetro de devolución de llamada de datos espera que se ejecute el nombre de la función, en el widget anterior el nombre de la función de devolución de llamada es devolución de llamada, por lo tanto, la función debe llamarse devolución de llamada:
function callback(){
console.log("El usuario ya resolvió el captcha, ahora puedes enviar tu formulario.");
}
Verifique si la respuesta ya se envió
Verifique el resultado de la respuesta grecaptcha:
if(grecaptcha.getResponse().length !== 0){
console.log("The captcha has been already solved");
}
El grecaptcha
objeto está disponible en la ventana, ya que el archivo google recaptcha api.js está cargado en su documento.
Verificar el lado del servidor
Como se dijo anteriormente, el valor del campo g-recaptcha-response estará ""
(vacío) si el usuario no resolvió el captcha, por lo tanto, solo verifique con el idioma de su servidor si el campo del formulario está vacío o no.
Ejemplo usando PHP (tenga en cuenta que el método puede ser diferente de POST según su formulario):
if($_POST["g-recaptcha-response"] != ''){
// El usuario solucionó el recaptcha, ahora verifícalo si es un robot usando la API.
}
Que te diviertas ❤️!
Conviertete en un programador más sociable