...
✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Una guía sobre la integración de hCaptcha con PHP

119

Recientemente, uno de nuestros lectores preguntó sobre la integración de hCapctha en un sitio web. El hCaptcha es una buena alternativa al servicio Google reCAPTCHA. En este artículo, estudiamos cómo se puede agregar hCapctha con PHP en su sitio web.

Siempre se recomienda tener un captcha en los formularios del sitio web. Los spam son realmente malos y simplemente te frustran. Nunca querrá perder su valioso tiempo eliminando comentarios falsos / innecesarios.

Con hCaptcha, el usuario debe resolver los desafíos antes de enviar un formulario. Y su formulario debe continuar solo si el captcha pasa su verificación. Al integrar captcha, evita que un montón de spam ingresen a la base de datos y su bandeja de entrada. Porque solo un humano real puede resolver los acertijos del captcha.

Dicho esto, echemos un vistazo a la integración de hCaptcha con PHP. Requiere verificar la respuesta de hCaptcha en el lado del servidor. Escribiremos el código del lado del servidor usando tanto cURL como la biblioteca Guzzle. El usuario puede utilizar cualquiera de ellos.

Empezando

Primero debe crear una cuenta con el servicio hCaptcha. A diferencia de Google reCAPTCHA, puede utilizar claves hCaptcha directamente en su sitio web. No es necesario que registre su dominio con ellos.

Pero si lo desea, puede agregar su dominio haciendo clic en el botón Nuevo sitio. Se abrirá un formulario en el que debe pasar su dominio al campo Nombres de host.

A continuación, haga clic en el icono de configuración de la tabla y tome la clave de su sitio.

Una guía sobre la integración de hCaptcha con PHP

Para obtener la clave secreta, haga clic en la pestaña ‘Configuración’.

Una guía sobre la integración de hCaptcha con PHP

Una vez que esté listo con las llaves, debe seguir 2 pasos. Primero, agregue el hCaptcha en su formulario. Y luego valide la respuesta captcha en el lado del servidor.

Creemos un formulario simple y agreguemos hCaptcha de la siguiente manera.

<form action="" method="POST">
    <input type="text" name="email" placeholder="Email" />
    <input type="password" name="password" placeholder="Password" />
    <div class="h-captcha" data-sitekey="YOUR_SITE_KEY"></div>
    <br />
    <input type="submit" name="submit" value="Submit" />
</form>
<script src="https://hcaptcha.com/1/api.js" async defer></script>

Aquí hemos incluido la biblioteca JavaScript de hCaptcha y hemos agregado una clase h-captchaal contenedor div. También debe pasar la clave de su sitio al atributo de datos data-sitekey.

Vuelva a cargar la página y ahora debería ver la casilla de verificación hCaptcha agregada al formulario. Veamos ahora cómo validar la respuesta captcha.

Validar la respuesta de hCaptcha usando cURL

Cuando un usuario envía un formulario junto con un captcha, debe verificar la respuesta del captcha en el lado del servidor. Para la verificación, debe enviar solicitudes POST al punto final de hCaptcha https://hcaptcha.com/siteverify. En la solicitud POST, los parámetros son clave secreta y h-captcha-response (que proviene del formulario enviado).

En PHP, podemos usar tanto cURL como Guzzle para interactuar con el servidor externo. Al enviar solicitudes a través de cURL, asegúrese de que la extensión cURL esté habilitada en su servidor.

En caso de cURL, su código será el siguiente para verificar la respuesta de hCaptcha.

<?php
if (isset($_POST['submit'])) {
    $data = array(
        'secret' => "YOUR_SECRET_KEY",
        'response' => $_POST['h-captcha-response']
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://hcaptcha.com/siteverify");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    $responseData = json_decode($response);
    if($responseData->success) {
        // proceed the form
    } else {
        echo 'Robot verification failed, please try again.';
    }
}
?>

Reemplace el marcador de posición con el valor real. En el código anterior, estamos verificando si la successvariable es verdadera en la respuesta. Si es cierto, entonces el formulario es seguro para continuar.

Validar la respuesta de hCaptcha usando Guzzle

Guzzle es una alternativa a cURL. Le proporciona un código mucho más limpio en comparación con cURL. Si está utilizando Guzzle, no necesita tener una extensión cURL en su servidor.

Para comenzar, primero debe instalar la biblioteca Guzzle en su proyecto. Ejecute el siguiente comando para la instalación de una biblioteca.

composer require guzzlehttp/guzzle

Después de esto, escriba el código a continuación que verificará la respuesta de hCAPTCHA utilizando la biblioteca Guzzle.

<?php
require_once 'vendor/autoload.php';
 
use GuzzleHttpClient;
 
if (isset($_POST['submit'])) {
 
    $client = new Client([
        // Base URI is used with relative requests
        'base_uri' => 'https://hcaptcha.com',
    ]);
      
    $response = $client->request('POST', '/siteverify', [
       'form_params' => [
            'secret' => "YOUR_SECRET_KEY",
            'response' => $_POST['h-captcha-response']
       ]
    ]);
 
    $body = $response->getBody();
    $arr_body = json_decode($body);
    if($arr_body->success) {
        // proceed the form
    } else {
        echo 'Robot verification failed, please try again.';
    }
}
?>

Espero que comprenda la integración de hCaptcha con PHP usando cURL y Guzzle. Comparta sus pensamientos y sugerencias en la sección de comentarios a continuación.

Artículos relacionados

Fuente de grabación: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More