(photos (map life (merge lluvia jose)))

Montando un Captcha con Figlet

{ :by Jose Figueroa Martinez :created 2011-07-03 :updated 2012-08-08 :tags php captcha programming }

Después de mucho tiempo sin publicar nada (pero nada!) me he propuesto actualizar más este blog y compartir las cosas que haga, aunque no sean muchas :-)

Ahora le toca a este capcha que he montado para mi página de contacto. Para quien no se acuerde, un captcha es una forma de comprobar que la persona que rellena un formulario o que hace una petición online es realmente una persona y no un software tipo bot que lo único que busca es mandarte spam.

En este caso, he utilizado el software Figlet, el cual permite convertir texto en una interpretación tipo Ascii Art, permitiendo muchos tipos de fuentes. He seleccionado las que no son tan difíciles de leer, ya que había algunas muy complicadas :-S

Para la “palabra segura” he utilizado un pequeño servicio web el cual me devuelvo una palabra pseudo random de un diccionario en español que encontré por ahí en la red, el cual tiene unas 54000 palabras aproximadamente.

El funcionamiento del captcha es sencillo:

  • En cada petición siempre se obtiene una palabra segura.
  • Si solo se está desplegando el formulario, entonces se guarda la palabra secreta en la sesión.
  • Si es una petición de envío de datos se comprueba que la palabra segura enviada sea igual a la almacenada en sesión (y que no sea una cadena vacía).
  • Si las palabras son iguales (usando todas minúsculas en este caso) se guardan los datos enviados en un archivo temporal, se cifran usando mi clave pública gnupg y se envían a mi correo personal.

El resultado final es el siguiente:
Imagen de pagina de contacto