micromedia ARGENTINA - Logo
comunicacion grafica y digital



.

.

captcha para validar formularios

si no te gusta leer podés solicitar el brindamos servicio arancelado de instalacíon en la república argentina



Formulario con captcha para frenar spam

Cuando tenés una web relativamente visitada, o incluso con pocas o nulas visitas, uno de los problemas que suelen aparecer son las consultas vacias desde el/los formulario/s de contacto.

Estas consutlas tienen generalmente trés motivos principales:

  • Robots de los buscadores apretando botones ( apretando boton enviar )
  • Robots de spammers que llenan todo tipo de formularios para conseguir links ( backlinks ), no importa si tu sitio se los genere o no, te lo van a llenar bien llenado
  • algún salamín, botarate, babaca, otario, tonto ( usá tu término regional ) que mande el form vacío.

Los motores de busqueda "obedientes" mandan robots que se atienen a ciertas reglas, por lo tanto podés frenarlos facilmente añadiendo la siguiente linea entre <head> y </head> " <meta name="robots" content="noarchive, noindex, nofollow"> ", en realidad con NOFOLLOW te alcanza para que "no sigan" y por lo tanto no generen la consulta. Tené en cuenta que no todos los robots van a obedecer, por lo que es una solución bastante débil.

Los humanos descuidados, o molestos, podrás frenarlos con una validación simple con javascript, donde si tiene campos vacios, o sei el mail no tiene @ y puntos como en mail@dominio.com no permita enviar el formulario. Pero esta validación se saltea muy facilmente deshabilitando javascript, y como agregado los robots de los buscadores NO TIENEN habilitado javascript, con lo cual estamos de nuevo en problemas.

Aclaración al márgen: los robots de los buscadores no son robots como el de futurama, yo robot, ni nada de eso. Pensalos como programas avanzados que navegan pela internet, archivando contenido.

Hecha esta aclaración innecesaria tal vez ;), vemos el tercer caso los malditos spammers y sus infernales robots llenaformularios... No tienen habilitado javascript, te llenan el fomrulario varias varias varias veces al día y pueden transformarse en una molestia, como se ve en la foto a continuación: ( click para ampliar )

datos inválidos y muuuuchos links en los comentarios. un desastre.

Posible Solución: CAPTCHA

Un captcha es, resumidamente: una foto que se genera mediante un código, y que va a presentar una combinación de letras y números, que deberá ser introducida en el formulario para demostrar que quien lo esta llenando es un humano.Al menos en este caso así funciona este captcha.

Nunca debe confunirse con el clásico argentino que mostramos a continuación, en la figura 3.

( figura 3 )

 

formulario de contacto

El siguiente es un formulario de contacto muy similar al que se usa en este sitio, le sacamos campos para simplificarlo, luego podés agregarle tantos como quieras.

 

código para evitar spam

CAPTCHA Image

 

 

En el Formulario vas a ver los campos nombre, mail y comentarios, los mínimos para un formulario básico.

Luego, antes del botón para enviar el fomrulario vas a tener el siguiente codigo

<img id="captcha" src="sec/securimage_show.php" alt="CAPTCHA Image" />

que va a mostrar la siguiente foto

CAPTCHA Image

el primer bloque llama a la pagina que genera la imagen


<input type="text" name="captcha_code" size="10" maxlength="6" />

el segundo es el campo donde la persona que visita tu sitio debe poner el código alfanumérico ( letras y números ) que aparece, demostrando, en teoría, que no es un bot o spambot.

 

implementación

En el mismo nivel de directorio que tu formulario de contacto, vas a tener la carpeta llamada "sec", disponible para descarga más abajo :) .

O sea que si tu formulario esta en www.tusitio.com/contacto/formulario-contacto.php o .html , en esta misma carpeta llamada "contacto" vas a guardar y subir la carpeta llamada "sec" con todos que contiene los archivos necesarios para que el script validador funcione.

permisos

para solucionar los problemas de permisos que se pudieran generar dentro del servidor vas a tener un archivo llamado php.ini, dentro del directorio "sec" con los siguientes datos

safe_mode = off

register_globals = on

Esto te debería funcionar con la mayoría de los servidores linux ( que son los más usados en la actualidad ). No te asustes por poner safe mode off, ya que justamente al estar el php.ini DENTRO DE UN DIRECTORIO, solo comprometerías dicho directorio.

procesador de formulario

El formulario de toma de datos apuntará a una página en php que va a procesar los datos y enviar el/los mails de acuerdo a tus necesidades. Nosotros mandamos una copia al cliente, una administración y otra al encargado o empresa asociada según el área de laburo, digo trabajo.

Es fundamental que ésta página procesadora cumpla dos condiciones:

- esté en PHP, no te asustes, simplemente guardala como php, importa si el resto de tu sitio esta en html

- tenga en su código ANTES que ningún otro dato o texto la siguiente linea:

<?php session_start(); ?>

Sin esta linea como primer elemento de la página, simplemente no anda.

Con primer elemento me refiero a que no puede haber ni un espacio en blanco, ni datos invisibles como se ve en el párrafo dedicado al problema tipico*

Verificación

Suponemos que ya tenés previamente implementado un formulario y que llegaste a esta página buscando un cabsha...

Bueno, en el formulario, o en la página que lo procesa, para ser más específicos, hay una parte del mismo que ENVIA EL MAIL .

El siguiente código va ANTES del trozo ( perdón ) de código que envia el mail, ya que se encarga de verificar si está correctamente puesto el captcha, y caso contrario frena todo

<? include_once $_SERVER['DOCUMENT_ROOT'] . '/carpetas/detusiti/sec/securimage.php'; // atento a la ruta, cambiala por la de tu sitio

$securimage = new Securimage();

?>

<? if ($securimage->check($_GET['captcha_code']) == false) {
// the code was incorrect
// handle the error accordingly with your other error checking

// or you can do something really basic like this
die('Pusiste cualquier verdura, o sos un SPAMBOT o nececitas lentes. '); // - zona editable -- DESPUES DE LA PALABRA "LENTES" tenes que poner el codigo html de tu sitio normal, por ejemplo </body></html> , para que tu sitio CIERRE. si no lo pones, cuando le decis DIE, no se muere de verdad, pero deja de interpretar el codigo y no queda bien visualmente. fin de zona editable -
}
?>

los comentarios que ves luego de // , pueden ser editados y borrados

problema típico

cuando trabajas con codificación utf-8, <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> ( recomendada y es como lo hacemos en este sitio ) podés llegar a tener un problema, ya que el dreamweaver te puede agregar un dato invisible a tus ojos ( el temido BOM bite order mark ), que queda PRIMERO, antes que la linea session start.

Esto ta va a enfermar, volver loco, etcétera.

Para solucionarlo incluimos un programa llamado BABELPAD, libre y gratuito.

Si experimentaste problemas del tipo HEADERS ALREADY SENT, quiere decir que estás teniendo este inconveniente mencionado.

Seguí el tutorial paso a paso, y cuando tengas el código listo, copialo, pegalo en el babelpad, guardalo como archivo de texto teniendo cuidado en DESTILDAR la opcion Byte Order Map, que es la que te está trayendo problemas.

Una vez hecho esto, cambia el nombre del archivo de texto por el de tu-pagina-procesadora-de-formulario.php reemplaza el archivo que generó el dreamweaver y subilo. Anda perfecto.

últimas observaciones

revisá bien las rutas de los archivos, que sean relativas a tu sitio, es un descuido habitual pero muy fácil de reparar

los archivos se encuentran en su gran mayoría en inglés. De acuerdo al nivel de descargas/utilización, se evaluará traducirlo al español

no brindamos soporte gratuito de ningún tipo, el mismo, escaso, se encuentra en la página oficial del proyecto

 

brindamos servicio arancelado de instalacíon en la república argentina

see, los archivos



links relacionados: