Habría que comenzar por definir qué es un captcha. Pues no es más que un sistema informático para verificar que el usuario que está utilizando nuestra web es un humano y no una máquina o robot, que se suele hacer por medio del reconocimiento de una imagen. No obstante, lo más seguro es que los lectores conozcan perfectamente este concepto y si no es así, os recomendamos leer la FAQ Qué es un captcha.
Quizás sea interesante, llegado a este punto y antes de pasar a analizar el script, que visitemos la página del captcha, donde se puede acceder al demo así como a varias notas de versión y posibilidades:
http://gonzo.teoriza.com/animal-captcha
Entre las ventajas que supone este sistema destaca su seguridad, ya que a lo largo de diversas versiones el creador ha trabajado mucho para optimizar el captcha, con la ayuda de algunas personas que se han dedicado a buscarle los puntos débiles. Según dice, en esta última versión se tiene el 100% de seguridad, si utilizamos nuestras propias imágenes de animales en vez de las preestablecidas. Otros puntos fuertes son su originalidad y que resulta vistoso y amigable, como ya habíamos comentado, el hecho de reconocer bichos en lugar de palabras.
Por su parte, existe la desventaja de tener que conocer cada animal (aunque los que utiliza el sistema de entrada son fáciles de reconocer incluso para los más pequeños) y que además los animales pueden tomar nombres distintos, no sólo dependiendo del idioma en el que hablemos, sino porque en países distintos, o incluso regiones diferentes dentro de un mismo país, un animal puede denominarse popularmente con nombres distintos. Todo ello, sin hablar de las posibles faltas de ortografía que Animal Captcha no reconocería como válidas.
error_reporting = E_ALL & ~E_NOTICE
Como en los servidores en producción suelen estar desactivados los notices, pues lo más seguro es que no haya problema alguno al ver el captcha en funcionamiento.
Además, el sistema en la actualidad usa alguna función PHP obsoleta (deprecated) que también habría que desactivar su advertencia para que no saliesen feos mensajes de error. Al menos esto es en la versión 1.5. Quizás en el futuro solventes estos problemas.
Una vez descomprimido hay un archivo PHP que tiene un ejemplo para verlo en funcionamiento llamado "example.php". Luego hay dos archivos importantes que implementan el sistema:
animal-captcha.php: Es un archivo que devuelve una imagen con las fotos de los animales a reconocer. Este archivo se puede poner en la ruta de una imagen (etiqueta IMG) y se mostrará directamente en nuestra página. Además, de manera transparente para nosotros, se creará una variable de sesión para guardar el resultado del captcha, que se deberá comprobar más tarde.
animal-captcha-check.php: es un archivo que contiene una función que utilizaremos para comprobar si la captcha escrita por el usuario es correcta. La función en concreto se llama animal_captcha_check() y debemos pasarle como parámetro la cadena del captcha escrita por el usuario. Devuelve un boleano que indica si la validación fue o no correcta.
A continuación podemos ver el código más sencillo posible para poder probar este captcha por reconocimiento de animales.
<?php
session_start();
?>
<form action="<?php echo $_SERVER["PHP_SELF"];?>" method=post>
<img src="animal-captcha.php">
<br>
Escribe los nombres de los dos animales, separados por un espacio:
<br>
<input type=text name="textocaptcha">
<input type=submit value="Enviar">
</form>
<?php
if ($_POST){
//recibo algo de formulario, valido captcha
require('animal-captcha-check.php');
if (animal_captcha_check($_POST["textocaptcha"])) {
echo "CORRECTO: captcha reconocido!";
}else{
echo "INCORRECTO: no has adivinado el captcha!";
}
}
?>