Cómo integrar, instalar o configurar reCAPTCHA v3 de Google en un formulario con PHP enviado por POST

ReCAPTCHA es un servicio gratuito de Google, que trata de proteger los sitios webs del SPAM y de los abusos por parte de bots maliciosos. En su versión reCAPTCHA v3, Google ha dado un gran paso para simplificar su uso por parte de los usuarios de los sitios webs, ya que mediante un análisis avanzado de la interacción, es capaz de decidir el grado de probabilidad (de 0 a 1) de que sea un usuario humano o un robot, el que esté al otro lado del servidor.

A continuación te muestro un ejemplo sencillo de cómo instalar, integrar o configurar, reCAPTCHA v3 con un formulario en PHP. Este ejemplo es válido, cuando el envío de información se hace mediante POST.


Paso 1: Registrar un nuevo sitio web para obtener las claves públicas y privadas

Entra en https://developers.google.com/recaptcha/ y haz click en el enlace «Register reCAPTCHA v3 Keys» here. O bien accede directamente a https://www.google.com/recaptcha/admin/create

Aquí tendrás que rellenar los campos. Es importante que marques v3 en el tipo de reCaptcha.

Te generará 2 claves. La primera, es la clave pública que pondrás en la parte pública de tu formulario. La segunda clave es la clave privada, y es la que utilizarás en el PHP que procesa el formulario.


Paso 2: Inserta este script dentro de la etiqueta <head> de tu web

<script src='https://www.google.com/recaptcha/api.js?render=CLAVE_PUBLICA'> 
</script>
<script>
grecaptcha.ready(function() {
grecaptcha.execute('CLAVE_PUBLICA', {action: 'formulario'})
.then(function(token) {
var recaptchaResponse = document.getElementById('recaptchaResponse');
recaptchaResponse.value = token;
});});
</script>

• Reemplaza CLAVE_PUBLICA por la clave pública que habías generado en el paso anterior.
• Puedes modificar el valor «action», para nombrar tus formularios y así luego en el administrador de reCAPTCHA (https://www.google.com/u/1/recaptcha/admin/) hacer un seguimiento de cada formulario.


Paso 3: Añade el campo reCAPTCHA a tu formulario

Dentro del formulario, tienes que añadir el siguiente campo:

<input type="hidden" name="recaptcha_response" id="recaptchaResponse">

Paso 4: Añade la verificación en desde el servidor en el archivo PHP

Añade el siguiente código a tu script:

$recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify'; 
$recaptcha_secret = 'CLAVE_PRIVADA'; 
$recaptcha_response = $_POST['recaptcha_response']; 
$recaptcha = file_get_contents($recaptcha_url . '?secret=' . $recaptcha_secret . '&response=' . $recaptcha_response); 
$recaptcha = json_decode($recaptcha); 

if($recaptcha->score >= 0.7){
    // OK. ERES HUMANO, EJECUTA ESTE CÓDIGO
}else{
    // KO. ERES ROBOT, EJECUTA ESTE CÓDIGO
}

Dentro del código de verificación de tu formulario, tienes que reemplazar CLAVE_PRIVADA, por la clave privada que generaste en el paso 1.

El valor de 0.7 indica que hay una probabilidad del 70% de que el que interactúa sea humano. Puedes incrementar este valor hasta el 1 si quieres aumentar la fiabilidad del sistema, pero corres el riesgo de que se descarten solicitudes correctas.

Modifica los códigos a ejecutar (envío de mail, login, etc.) en los casos OK y KO.

Con esto ya tendrás instalado tu reCAPTCHA v3 en tu formulario PHP enviado por POST.

Deja un comentario