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 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,
haciendo eso ya obtienes las 2 llaves, la privada y la llave pública
Paso 3.-
El código 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.
<html> <body> <form action="" method="post"> <?php require_once('recaptchalib.php'); //librería descargada de Google // Llaves creadas en Google $publickey = "xxx"; //llave publica $privatekey = "xxxx"; //lave privada //Respuesta de reCAPTCHA $resp = null; # Errores de reCAPTCHA si es que hay $error = null; # was there a reCAPTCHA response? if ($_POST["recaptcha_response_field"]) { //Si la variable existe es decir, fué enviado desde un Formulario //la función necesita la llave privada, la IP del usuario, el campo "desafío" y el campo "respuesta" que dió el usuario $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); //Cuando recibimos los datos por el formulario, procedemos a hacer la verificación en reCATPCHA if ($resp->is_valid) { echo "AQUI VA TODO EL CODIGO PARA GRABAR, ENVIAR CORREO, ETC. es decir, cuando pasó el reCAPTCHA"; } else { //En caso falló el reCAPTCHA $error = $resp->error; //Si deseas muestras los errores echo $error; //Aqui va por ejemplo la reimpresión del formulario y el mensaje de reCAPTCHA invalido, etc. } } echo recaptcha_get_html($publickey, $error); //imprimimos el formulario de reCATPCHA ?> <br/> <input type="submit" value="submit" /> </form> </body> </html>
- 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 código 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 redireccionarlo 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).
Agregue un comentario a nanokiller Cancelar respuesta