¿Cómo integrar reCAPTCHA con PHP en 5 minutos?

Integrar recaptcha

Google reCAPTCHA es una herramienta muy útil y ampliamente reconocida para proteger tu sitio web contra el spam y el abuso automatizado. Al integrar recaptcha, puedes asegurarte de que solo los usuarios humanos puedan interactuar con tu sitio, bloqueando efectivamente a los bots y otros programas automatizados que intentan acceder a tus formularios o secciones de comentarios. A continuación, te guiaré paso a paso sobre cómo integrar reCAPTCHA en un sitio web básico desarrollado con PHP, ayudándote a proteger tu plataforma de manera eficiente y sin complicaciones.

Uno de los problemas más comunes que enfrentan las empresas y las organizaciones de todos los tamaños es la llegada constante de spam o correos electrónicos no deseados. Estos correos, además de ser molestos, suelen causar un desorden significativo en las bandejas de entrada, dificultando la gestión de la comunicación interna y externa. Peor aún, muchos de estos correos contienen enlaces malintencionados que, si se clican por error, pueden redirigir a sitios web peligrosos o incluso comprometer la seguridad de la empresa, exponiendo datos sensibles o instalando software malicioso en los sistemas. Por esta razón, es esencial evitar hacer clic en cualquier enlace que provenga de un remitente sospechoso o desconocido.

Para combatir este problema, existen diversas herramientas antispam diseñadas específicamente para reducir el impacto del spam. Una de las soluciones más efectivas es, sin duda, Google reCAPTCHA. Esta herramienta no solo previene el acceso automatizado, sino que también mejora la seguridad general de tu sitio

Tutorial: ¿Cómo integrar reCAPTCHA V2 usando PHP?

Objetivo: Aprender a integrar Google reCAPTCHA V2 en un formulario PHP para protegerlo contra bots y spam.


1. Crear el Proyecto y Obtener las Claves de reCAPTCHA

Primero, debes obtener las claves necesarias para integrar Google reCAPTCHA en tu proyecto.

  1. Accede a Google reCAPTCHA: Ve a https://www.google.com/recaptcha/admin/create.
  2. Registra tu sitio web:
    • Añade el nombre del dominio de tu sitio web.
    • Selecciona «reCAPTCHA V2».
    • Acepta los términos del servicio y haz clic en «Enviar».
  3. Obtén las claves: Google te proporcionará dos claves:
    • Clave de sitio (Site Key)
    • Clave secreta (Secret Key)

2. Agregar reCAPTCHA al Formulario HTML

Una vez que tengas las claves, añade el reCAPTCHA a tu formulario HTML.

    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Formulario con reCAPTCHA V2</title>
        <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    </head>
    <body>
        <form action="procesar-formulario.php" method="POST"
            <label for="nombre">Nombre:</label>
            <input type="text" id="nombre" name="nombre" required>
            
            <label for="email">Email:</label>
            <input type="email" id="email" name="email" required>
            
            <!-- Aquí se añade el reCAPTCHA -->
            <div class="g-recaptcha" data-sitekey="TU_CLAVE_DE_SITIO"></div>
            
            <button type="submit">Enviar</button>
        </form>
    </body>
    </html>

 

Nota: Reemplaza "TU_CLAVE_DE_SITIO" con la clave de sitio que obtuviste de Google.

3. Validar reCAPTCHA en el Servidor con PHP

Ahora, en el archivo procesar-formulario.php, valida el reCAPTCHA utilizando la clave secreta.

 

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $secretKey = 'TU_CLAVE_SECRETA';  // Reemplaza con tu clave secreta
        $recaptchaResponse = $_POST['g-recaptcha-response'];

        // Verificamos que se haya enviado el reCAPTCHA
        if (!empty($recaptchaResponse)) {
            // Petición al API de reCAPTCHA
            $response = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$recaptchaResponse");
            $responseData = json_decode($response);

            // Validamos la respuesta del API
            if ($responseData->success) {
                echo "Verificación exitosa, ¡eres humano!";
                // Aquí puedes continuar procesando el formulario
            } else {
                echo "Verificación fallida, por favor intenta de nuevo.";
            }
        } else {
            echo "Por favor, completa el reCAPTCHA.";
        }
    }
    ?>

Explicación del código:

  • El formulario envía una solicitud POST con un campo g-recaptcha-response.
  • Se envía una solicitud a la API de Google reCAPTCHA con la clave secreta y la respuesta del reCAPTCHA.
  • La API devuelve un JSON indicando si la verificación fue exitosa (success: true) o fallida (success: false).

4. Prueba y Ajusta el Formulario

Dirige tu navegador al archivo HTML con el formulario y envíalo. Verifica que el reCAPTCHA funcione correctamente al comprobar que el formulario solo se procesa si la validación del reCAPTCHA es exitosa.

5. Mejoras Opcionales

  • Protección adicional: Puedes agregar más validaciones en tu servidor para garantizar que el formulario esté protegido adecuadamente.
  • Estilos CSS: Mejora la presentación del formulario con CSS personalizado.

¡Y listo! Ahora has integrado Google reCAPTCHA V2 en tu formulario PHP. Esto te ayudará a prevenir envíos automáticos y protegerá tu sitio contra el spam de bots.