SummArg | Cursos y recursos para webmasters

20/07/2010

Cómo insertar reCAPTCHA en tus formularios?

La web abunda en peligros y molestias que operan bajo forma de bots (robots). En este caso, los bots utilizados con fines maliciosos, son programas creados para determinadas funciones, como ser llenar miles de formularios webs enviando spam, vulnerar algún sitio y/u obtener alguna información en particular.

Los formularios son una puerta de entrada para algunos de estos peligros, por lo que necesitamos imperiosamente colocar algún freno, algo que fuerce la interacción de un ser humano del otro lado de nuestro formulario. Para ello están los CAPTCHAS (Completely Automated Public Turing test to tell Computers and Humans Apart , traducido es Prueba de Turing pública y automática para diferenciar máquinas y humanos), que son las clásicas pruebas en donde vemos texto distorsionado que deberemos ingresar a modo de comprobación.

Nosotros vamos a utilizar reCAPTCHA porque al hacerlo estamos ayudando a digitalizar libros (enterate del proyecto), es gratuito y muy simple de implementar. Con tu cuenta de Google, ingresá al siguiente link para generar tus keys: https://www.google.com/recaptcha/admin/create

Para descargar la librería para PHP nos dirigimos a esta sección de descargas. Si necesitamos trabajar con otros lenguajes o con determinadas plataformas, deberemos acceder a cada una de dichas secciones desde aquí.

Colocamos el archivo recaptchalib.php en nuestro sitio y antes del submit de nuestro formulario insertamos el código:

<form method="post" action="formulario.php">
<?php
// descomentar la linea de abajo si tenemos el codigo de validacion en otro archivo
// require_once('recaptchalib.php');
$publickey = "tu public key";
echo recaptcha_get_html($publickey, $error);
?><
<input type="submit" />
</form>

El reCAPTCHA necesita pasar por una validación para saber si insertar la información en una DB o enviarla por email, dependiendo el caso. Podemos utilizar el mismo archivo para colocar el script o uno nuevo, cualquiera sea el caso de formulario.php (a donde va el formulario ejemplo) deberemos incluir al inicio el siguiente código:

require_once('recaptchalib.php');
$privatekey = "tu private key";
$resp = null;
$error = null;
if ($_POST["recaptcha_response_field"]) {
$resp = recaptcha_check_answer  $privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if ($resp->is_valid) {
// CODIGO A EJECUTAR SI EL RECAPTCHA VALIDA CORRECTAMENTE
} else {
// RECAPTCHA NO VALIDA ENTONCES IMPRIME ERROR
die ("El codigo reCAPTCHA no fue correctamente ingresado, por favor vuelva atras e intente nuevamente");
}
}

Coloquemos nuestras keys y la ruta al archivo recaptchalib.php, subamos la página con el formulario y verifiquemos que todo haya quedado en su lugar.

Finalmente si queremos personalizar un poco el reCAPTCHA, tenemos cuatro themes para utilizar. Si queremos cambiar el theme, en la página en donde insertamos el reCAPTCHA antes del tag <form> debemos insertar el siguiente código:

<script type="text/javascript">
var RecaptchaOptions = {
theme : 'theme_name'
};
</script>

En donde theme_name se reemplaza por el nombre del theme. También podemos cambiar el lenguaje de los textos mostrados, generar traducciones personalizadas y modificar el css de las distintas instancias del script.

Ver mas sobre personalización

Dejar un comentario

  1. carlos

    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

  2. Juan Mancilla

    insertale un require a donde esta el captcha

Dejar un comentario