Underc0de

Programación Web => Zona Webmaster => Mensaje iniciado por: arthusu en Septiembre 29, 2014, 12:11:27 PM

Título: Resumen reCaptcha
Publicado por: arthusu en Septiembre 29, 2014, 12:11:27 PM
¿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

(http://4.bp.blogspot.com/-1vF9jgK8KP4/VAVY26UpUlI/AAAAAAAACKc/nSd1R02r-cU/s1600/singup.png)

Para obtener una clave es necesario registrar nuestro dominio:

https://www.google.com/recaptcha/admin#whyrecaptcha (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 (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:



Código (php) [Seleccionar]
<?php

 
require_once('recaptchalib.php');

 
$clavepublica "Aquivatuclavepublica"// esta la obtienes cuando te registras

 
echo recaptcha_get_html($clav5epublica);

?>


Con el codigo anterior tu formulario luciria como el siguiente:


Código (php) [Seleccionar]
<!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>

 


(http://1.bp.blogspot.com/-O-2G5qNB-vc/VAVc0gdnVSI/AAAAAAAACKo/8W_UZKnOM5c/s1600/recaptcha.png)

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:


Código (php) [Seleccionar]

<?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 (https://developers.google.com/recaptcha/docs/php)
Título: Re:Resumen reCaptcha
Publicado por: ANTRAX en Septiembre 29, 2014, 12:18:24 PM
Muy bueno arthusu!!!! Está excelente y muy bien explicado!
Te dejare +1

Saludos!
ANTRAX
Título: Re:Resumen reCaptcha
Publicado por: Ruleman en Septiembre 29, 2014, 12:45:35 PM
Muy buen aporte!! ;D