lunes, 1 de septiembre de 2014

Resumen reCaptcha

¿Que es reCaptcha?


reCaptcha te ayuda a prevenir a que abusen de tu sitio (que metan spam o que registren cuentas falsas) el captcha asegura que un humano esta realizando la accion.

 

API Keys



Para obtener una clave es necesario registrar nuestro dominio:

https://www.google.com/recaptcha/admin#whyrecaptcha

Puedes poner 1 o mas dominios separarlos por comas, ejemplo:

http://www.arthusu.blogspot.com,http://www.tutorialesarthusu.comlu.com,http://www.most-security.com,http://www.underc0de.org
Por defecto todas las claves funcionan en "localhost" con la ip 127.0.0.1 para que puedas hacer pruebas en tu servidor local.

Integrarlo

Para poder integrar reCaptcha a tu sitio solo es necesario realizar los tres pasos siendo el tercero opcional:

1.- Del lado del cliente: mostrar el widget recaptcha (Requerido)
2.- Del lado del servidor: verificar la solucion (Requerido)
3.- Personalizar  (Opcional)

En la mayoria de los formularios webs tu usualmente tienes dos archivos: el formulario con los campos y el script que procesa los campos del formulario. Estos dos archivos corresponden al paso 1 y 2. Por lo tanto se tendran que modificar 2 archivos diferentes en la mayoria de los casos.

Hay dos maneras de agregar reCaptcha (a) con plugins o (b) sin plugins. Nosotros veremos la primera forma, que es con plugins utilizando PHP.


Usando reCaptcha en PHP

Para utilizar reCaptcha con PHP necesitas descargar la libreria:

https://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest

De los archivos que vienen en el zip comprimido solo necesitas 1 archivo el que se llama recaptchalib.php los demas son ejemplos y cuestiones legales.

Despues de haberte registrado para poder usar la clave del API podemos proceder.

Del lado del cliente: como crear el captcha la imagen aparece


Si quieres utilizar la libreria reCaptcha de PHP para mostrar el widget, solo necesitas insertar la siguiente parte de codigo dentro de un elemento <form> donde el widget CAPTCHA sera colocado:


<?php
 require_once('recaptchalib.php');
 $clavepublica = "Aquivatuclavepublica"; // esta la obtienes cuando te registras
 echo recaptcha_get_html($clavepublica); 
?>

Con el codigo anterior tu formulario luciria como el siguiente:

<!DOCTYPE html>
<html>
<head>
 <title>reCaptcha</title>
</head>
<body>
<!-- El body es requerido ya que sino el captcha no se mostrara en algunos navegadores -->
<form method="post" action="verificar.php">
  <?php
   require_once('recaptchalib.php');
   $clavepublica = "Aquivatuclavepublica"; // esta la obtienes cuando te registras
   echo recaptcha_get_html($clavepublica); 
  ?>
 <input type="submit" />
</form>
</body>
</html>
 

No olvides reemplazar en la variable $clavepublica donde dice Aquivatuclavepublica por tu clave publica.

Si miras en el formulario se encuentra en el atributo action verificar.php este archivo es importante ya que aqui sera procesado el formulario, este archivo deberia de encontrarse en la misma localizacion que el archivo del formulario html.

Con la funcion require_once() llamamos al archivo requerido que es la libreria para el captcha, si este no se encuentra el script no puede continuar, recuerda colocar la ruta correctamente require_once(turuta/dondeseencuentra/recaptchalib.php)

Del lado del cliente: como probar que lo introducido por el usuario es lo correcto

El siguiente codigo deberia ser puesto al incio del archivo verificar.php:


<?php
 require_once('recaptchalib.php');
 $claveprivada = "Tuclaveprivada";
 $respuesta = recaptcha_check_answer($claveprivada,
     $_SERVER["REMOTE_ADDR"],
     $_POST["recaptcha_challenge_field"],
     $_POST["recaptcha_response_field"]);
 if (!$respuesta->is_valid) {
  // El captcha se metio incorrectamernte
  die("El captcha no se ingreso correctamente. Ve atras y vuelve a intentarlo". $respuesta->error);
 }else{
  // Tu codigo para manejar una verificacion correcta
  echo "Bien hecho";
 }
?>

En el codigo de arriba:

* recaptcha_check_answer - retorna un objeto representando cuando el reto se completo correctamente
* Si $respuesta->is_valid si es true entonces puede continuar con el procesamiento del formulario
* Si $respuesta->is_valid si es false entonces muestra de nuevo otra imagen en el captcha. En caso de que $respuesta->error ocurra un error el captcha mostrara el codigo de error.

Nota importante: No confundas la clave publica con la clave privada.

Estaté seguro de que hayas colocado el array superglobal $_POST para usar el captcha.

Hasta aqui llega nuestro pequeño resumen de reCaptcha si quieres obtener mas informacion puedes consultar: https://developers.google.com/recaptcha/docs/php


 

No hay comentarios:

Publicar un comentario en la entrada