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 pública

reCAPTCHA_llave

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>