En Nodstrum encuentro una utilidad en PHP para crear Captcha facilmente (uno de los pocos en toda la red que funciona. Garantizado!). Les explicaré como hacerlo.

Easy Captcha

Paso 1: obligatorio! verifica que tengas habilitado la librería GD de PHP.

Paso 2: Nos descargamos la clase captcha.class.php del blog del autor, y vamos a configurar este archivo. Busca la variables $imageDirectory e $imageURL. La primera variable contiene el nombre de la carpeta donde se almacenarán las imágenes generadas dinámicamente. Esta carpeta debe tener permiso de escritura. La segunda variable es la dirección URL completa de la carpeta anterior. Ejemplo:

var $imageDirectory = 'image_directory';
var $imageURL = 'http://localhost/mi_sistema_captcha/image_directory';

Paso 3: Creamos un archivo PHP, le damos cualquier nombre, para este ejemplo index.php.  Lo que vamos hacer es:

  • Llamar a la clase captcha.class.php
  • Crear una instancia de la clase Captcha
  • Usamos el método create() de la instancia y lo pasamos a una variable, en este caso $captchaImage
  • Note: que verificamos si la variable POST[$captcha->captchaInputName] esta declarada. Esto lo hacemos porque usamos el mismo archivo index.php para el proceso de verificación del captcha.
  • Usamos el método verify() para verificar si el captcha el correcto ó no. Se almacenerá el resultado en la variable $message.
  • Ya en  la parte del body, si $message esta declarado, se muestra; caso contrario mostrará el formulario. Note que imprimos la variable $captchaImage. Ésta contiene una imagen con un código y campo de texto, osea en captcha en sí.

Código de index.php

<?php
require_once('captcha.class.php');
$captcha = new Captcha;
$captchaImage = $captcha->create();

//verificamos si variables POST estan declaradas
if(isset($_POST[$captcha->captchaInputName])){

//verificamos el captcha
$verified = $captcha->verify($_POST[$captcha->captchaInputName]);
if($verified){
$message='Correcto';
}else{
$message='Incorrecto';
}
}
?>

<html>
<head>
<title>Captcha</title>
</head>

<body>
<?php
if(isset($message)){
echo $message;
}else{
?>

<form name="formulario" method="post" action="index.php">
<?php echo $captchaImage; ?>
<input type="submit" value="Verificar" />
<?php } ?>
</form>
</body>
</html>

[ ver un demostración del captcha

Realmente una práctico y sencillo.

Vía | Nodstrum