Usando reCAPTCHA en PHP

23 marzo, 2013
Jhonnyf

reCAPTCHA es un producto de Google que se emplea como prueba de desafío-respuesta y se utilizada en informática para determinar cuándo el usuario es o no humano. se usa principalmente para el envió de datos a través de formularios de contactos o cualquier otro formulario que esté a la vista de los usuarios no registrados.

Si tienes un formulario de contacto o una pagina para enviar un correo para recomendar a un amigo por ejemplo, vas a necesitar poner un sistema de CAPTCHA para evitar que los ROBOTS lo usen para enviar SPAM y/o para filtrar los mensajes que te pueden llegar por ese formulario de contacto.

reCAPTCHA

reCAPTCHA se basa en el hecho de que para un ser humano puede ser simple determinar el texto presente en una imagen cuando para una máquina esta tarea resulta en ocasiones demasiado compleja

Paso 1.-

Para usar reCAPTCHA en PHP, lo primero que necesitas es bajar La Libreria PHP reCAPTCHA. solo necesitas 1 archivo de ese ZIP (recaptchalib.php). los demás archivos son solo ejemplos e información adicional que no nos sirve.

Paso 2.-

Necesitas obtener una llave pública, y eso lo obtienes en la web del reCAPTCHA, https://www.google.com/recaptcha/admin/create?app=php,

reCAPTCHA_registro

Click para Ampliar

haciendo eso ya obtienes las 2 llaves, la privada y la llave publica

reCAPTCHA_llave

 

Paso 3.-

El Codigo para hacer la verificación se pone en el PHP que recepciona los datos enviado por el formulario, básicamente es recibir todos los datos y entre ellos el captcha que puso el usuario, enviarlo a verificar con la función de la librería y finalmente según la respuesta grabamos o mostramos el mensaje de error.

 

  • recaptcha_check_answer Nos retorna el objeto que contiene si el usuario puso correctamente el reCAPTCHA es decir, si pasó la verificación humana.
  • SI $resp->is_valid es TRUE entonces quiere decir que pasó la verificación humana y se puede continuar con la ejecución del codigo que graba o envia el correo electrónico.
  • SI $resp->is_valid es FALSE quiere decir que no pasó el reCAPTCHA y se según tu programación darle otra oportunidad, reimprimir el formulario o redirecionarlo o un mensaje de error. adicionalmente  $resp->error contiene los errores que se pudieron dar (La llave publica o privada es invalida, no puso la solución correcta, etc).

16 Comentarios. Dejar nuevo

he logrado aplicar el recaptcha gracias a tu tutorial!, muchas gracias!

Responder

Hola! estoy queriendo poner el recaptcha en mi formulario pero no puedo lograr que quede. Ya tenia armado el formulario y no se como colocar el codigo del recaptcha. cuando hablas del codigo de verificación, ese codigo va en algun lugar del formulario o es un .php aparte??

Responder

no me sale la cosa esque yo mi formulario ya lo tengo creado al agregarselo a mi formulario el recaptcha suvo la pagina y lo que m aparece en vez del recaptcha me tira todo el codigo que escribi me lo junta y me lo pone en mi pagina

Responder

Muchas gracias, lo unico que no me gusta es lo de la llave, lo voy a probar. Saludos

Responder

valla!!
por fin un ejemplo que si funciona muchas gracias hermano

Responder

Voy a probar que tal va

Responder

El mejor ejemplo que hay en la vuelta
the best example i could find

Thnks/gracias

Responder

implemente este captcha como lo indicas, y funciona, pero no logro que sea obligatorio. Si queda en blanco de todas formas se envia el formulario.
Alguna idea?
Gracias, saludos

Responder

Carlos 31 enero, 2014 at 9:30 PM – Reply

implemente este captcha como lo indicas, y funciona, pero no logro que sea obligatorio. Si queda en blanco de todas formas se envia el formulario.
Alguna idea?
Gracias, saludos

pues eso ya es programación de javascript o jquery estimado, a pesar que lo validas en estos que mencione tambien tiene que validarlo en la capa del controlador y si esta vacio strlen(trim($capcha))<0 pues simplemente no procesas el guardado de datos. el envio del formulario siempre se hara solo que el controlador lo valida para proceder con guardar en la base de datos o no.

Responder

logre implementar el código con éxito y logre que fuera obligatorio de la siguiente manera:
esta parte del código se coloca antes del botón de enviar en el formulario “formulario.php” dentro del aunque puedes colocarlo donde prefieras, yo lo hice así xq queda mejor

y esta parte del código la pegas por ejemplo dentro del archivo “enviar.php” donde validas los datos del formulario, esto tiene que estar de primero para que haga la verificación del formulario

is_valid) {

// What happens when the CAPTCHA was entered incorrectly
die (“The reCAPTCHA wasn’t entered correctly. Go back and try it again.” .
“(reCAPTCHA said: ” . $resp->error . “)”);

} else {
// Your code here to handle a successful verification
}
?>
código de email

y eso es todo para que el captcha sea obligatorio en tu formulario.. Este funciona en base al captcha que te da google en recaptcha.net
de todas maneras al entrar en la web y registres el dominio te darán toda la información que necesites en la parte de MY ACCOUNTS luego MY SITES y luego le das en el sitio que creaste ahí encontraras todo lo que necesites para instalar esto, puedes verificarlo en la parte de reCAPTCHA plugins and libraries, luego plugins y eliges php… Saludos

Responder
Transfers Majorca
16 mayo, 2014 1:15 PM

Gracias

Responder
Alquiler autocar mallorca
16 mayo, 2014 1:16 PM

Me ha sido de gran ayuda, llevaba días intentado implantarlo en mi web. Gracias

Responder

Me está yendo muy bien, pero me gustaría mucho poder reducir el tamaño del captcha!!!

Responder

amigos, intento y no puedo… me estoy volviendo loco! necesito ayuda!

Responder

Hola, gracias por compartir tu conocimiento, esta muy explicado y entendible, también dejo mi granito de arena por si a alguien le sirve: http://paraisodeldesarrollador.blogspot.mx/2015/05/recaptcha-en-grails-con-recaptcha-and.html

Responder

Gracias amigo…me sirvio mucho

Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *