Configurar reCAPTCHA 2.0 con PHP

mayo 29, 2017

Hoy en día es totalmente necesario utilizar un captcha en los formularios de nuestras páginas web para evitar a los bots. Hasta hace poco el captcha habitual era aquel en el que teníamos que escribir las dos palabras que aparecían en una imagen para demostrar que no éramos un bot:

 

Google a publicado la versión 2.0 de reCAPTCHA, el cual es mucho más sencillo y solamente debemos confirmar que no somos un robot 🙂

 

Vamos a ver como configurar reCAPTCHA 2.0 con PHP.
Lo primero que tenemos que hacer es dar de alta nuestra web en el panel de administración de reCAPTCHA: https://www.google.com/recaptcha/admin

Para dar de alta nuestro web, debemos completar la siguiente sección:

En el campo “etiqueta” daremos un nombre descriptivo, por ejemplo el título de la web.
Después, elegimos la opción reCAPTCHA V2, escribimos el nombre de nuestro dominio (sin las www), aceptamos las condiciones de uso y pulsamos en “Registrar”:

Una vez hemos terminado la configuración, obtenemos las claves que utilizaremos en nuestra web:

Con la Clave del sitio y con la Clave secreta de, podemos proceder a configurar nuestro sitio web para utilizar reCAPTCHA 2.0 en PHP.
Supongamos que tenemos el siguiente formulario HTML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
    <head>
    	<title>Ejemplo reCAPTCHA 2.0 con PHP</title>
    	<script src='https://www.google.com/recaptcha/api.js'></script>
	</head>
	<body>
		<form action="formulario.php" method="post">
		    <input name="name" placeholder="Nombre"/>
		    <input name="email" placeholder="Email"/>
		    <textarea placeholder="Tu mensaje" name="message"></textarea>
		    <div class="g-recaptcha" data-sitekey="API_KEY"></div>
		    <button type="submit" name="submit">Enviar</button>
		</form>
	</body>
</html>

En la línea #5 vemos que hemos añadido la librería javascript necesaria para que funcione reCAPTCHA 2.0.
En la línea #12 hemos añadido el reCAPTCHA 2.0 en sí. Deberemos sustituir API_KEY por la Clave del sitio obtenida anteriormente.

El “action” del formulario anterior nos lleva al siguiente formulario.php de ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
	$name = stripslashes($_POST["name"]);
	$email = stripslashes($_POST["email"]);
	$message = stripslashes($_POST["message"]);
 
	$recaptcha = $_POST["g-recaptcha-response"];
 
	$url = 'https://www.google.com/recaptcha/api/siteverify';
	$data = array(
		'secret' => 'API_SECRET',
		'response' => $recaptcha
	);
	$options = array(
		'http' => array (
			'method' => 'POST',
			'content' => http_build_query($data)
		)
	);
	$context  = stream_context_create($options);
	$verify = file_get_contents($url, false, $context);
	$captcha_success = json_decode($verify);
	if ($captcha_success->success) {
		// No eres un robot, continuamos con el envío del email
		// ...
		// ...
	} else {
		// Eres un robot!
	}
?>

En la línea #10 deberemos sustituir API_SECRET por la clave secreta obtenida anteriormente.
Como podemos comprobar, si llegamos a la línea #23 significa que el usuario ha pasado el captcha y no es un robot, por lo que continuaremos con el funcionamiento normal (enviar un email, guardarlo en la base de datos, etc.).

 

CompartirTweet about this on TwitterShare on TumblrShare on FacebookShare on LinkedInShare on Google+Email this to someone

Tags ; ,

Escribe un comentario

Los comentarios son moderados y se utiliza rel="nofollow" para los enlaces.