Aprenda a verificar si el usuario ya marcó el campo Google Recaptcha.

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 grecaptchaobjeto 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 ❤️!


Ingeniero de Software Senior en EPAM Anywhere. Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores