Imagen de Ayuda dinahosting

Implementar Google ReCAPTCHA en un formulario PHP

Programación, Seguridad

Categorías


Estás en
Inicio > Seguridad > Implementar Google ReCAPTCHA en un formulario PHP

Implementar Google ReCAPTCHA en un formulario PHP

Vamos a explicarte como implementar Google ReCAPTCHA en un formulario PHP enviado por POST, tanto para la versión de V2 como para la versión V3.

Normalmente si trabajas con WordPress, tienes una tienda online WooCommerce o PrestaShop u otros CMS, dispones de plugins o módulos para facilitarte esta tarea, sin embargo, en una web a medida tendrás que añadirlo de forma manual a tus formularios.

El proceso es sencillo, teniendo una pequeña base de programación PHP. Se añaden unas líneas de código adicional en el formulario y en el proceso de validación para la implementación de Google ReCAPTCHA V3 y el proceso es el mismo para Google ReCAPTCHA V2 añadiendo además una librería que Google pone a nuestra disposición y que puedes descargar desde aquí.

Antes de empezar asegúrate de tener tus claves Google ReCAPTCHA, ten en cuenta que son diferentes según la versión

Implementando ReCAPTCHA V2

Descarga la librería recaptchalib.php que indicamos anteriormente y súbela a tu hosting.

Edita tu formulario PHP y añade la siguiente línea al principio del código, justo después de “<?php”

 require_once "recaptchalib.php";

Puedes subir esta librería al mismo directorio donde está tu formulario; sin embargo, puedes colocarla donde desees y cambiar la ruta en el script para llamar a esta librería.

Ahora añade el siguiente script entre las etiquetas <head> y </head>

<script src="https://www.google.com/recaptcha/api.js?hl=es" async defer></script>

Coloca el siguiente código donde quieras que sea visible el cuadro de validación de Google ReCAPTCHA.

<div class="g-recaptcha" data-sitekey="CLAVE PUBLICA"></div>

Debes cambiar la palabra CLAVE PÚBLICA de este código por la clave pública o también llamada clave de sitio que te facilita Google.

En el fichero que hace la validación de los datos de formulario añade el siguiente código.

 require_once "recaptchalib.php";   
 $secret = "CLAVE_PRIVADA";
 $response = null;
 // Verificamos la clave secreta
 $reCaptcha = new ReCaptcha($secret);
 if ($_POST["g-recaptcha-response"]) {
     $response = $reCaptcha->verifyResponse(
     $_SERVER["REMOTE_ADDR"],
     $_POST["g-recaptcha-response"]
     );
  }
 
 if ($response != null && $response->success) {
    // Añade aquí el código que desees en el caso de que la validación sea correcta
  } else {
    // Añade aquí el código que desees en el caso de que la validación no sea correcta o muestra
  }

Debes cambiar la palabra CLAVE_PRIVADA de este código por la clave privada o también llamada clave secreta que te facilita Google.

Con esto podremos ver el campo de verificación de Google ReCAPTCHA v2 en nuestro formulario.

Formulario php con google ReCAPTCHA V2
Formulario php con google ReCAPTCHA V2

Implementando ReCAPTCHA V3

El primer paso es añadir el siguiente script entre las etiquetas <head> y </head> del formulario 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: 'ejemplo'})
.then(function(token) {
var recaptchaResponse = document.getElementById('recaptchaResponse');
recaptchaResponse.value = token;
});});
</script>

Debes cambiar la palabra CLAVE PÚBLICA de este código por la clave pública o también llamada clave de sitio que te facilita Google. También puedes cambiar el valor action para hacer un seguimiento de tus formularios en el administrador de Google ReCAPTCHA

A continuación inserta el siguiente contenido dentro del código de formulario

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

En el fichero que hace la validación de los datos de formulario añade el siguiente código.

$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){
    // Añade aquí el código que desees en el caso de que la validación sea correcta
}else{
    // Añade aquí el código que desees en el caso de que la validación no sea correcta
}

Debes cambiar la palabra CLAVE_PRIVADA de este código por la clave privada o también llamada clave secreta que te facilita Google.

Modifica el valor score del código por el que desees entre 0 y 1. Este valor indica cuál es la probabilidad de que el usuario que está accediendo al formulario sea una persona y no un robot, en función de eso podrás definir si bloqueas esa petición o no.

Con este código tendrás funcionando el sistema de validación sin interacción del usuario Google reCAPTCHA v3.

Skip to content