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.
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
gracias..me ha sido de utilidad este script….lo unico malo es q no borra automaticamente las imagenes que va generando….asi que tuve que escribir un par de lineas más …….y yo q no queria trabajar…aggghhh :S
haber si compartes esas lineas 🙂 Saludos
Genial por sencillez pero el png que genera es erróneo ¿sabes el motivo?
lore, compartes?
En mi caso daba un error, pero se corrigió despues de cambiar la linea 123 de captcha.class.php
$saveImage = imagepng($image, $imageFilename, 100);
por
$saveImage = imagepng($image, $imageFilename, 9);
muy buen post
tengo una consulta, tengo asignados todos los permisos ( 777 ) y tengo error puntualmente en la linea 123 y 161 . Me dice que chequee los permisos..
ya solucione el tema, por si le sirve a alguin, entiendase soy nuevo en el tema, el directorio debe figurar “../ ” y no ‘http://www.mipagina.com.ar’ ……
Tengo otro inconveniente y es con las Cokies, están habilitadas en todos los navegadores que poseo y en todas tengo el mismo error, en el archivo class …. linea 79 y 160 …
Desde ya, muchas gracias, excelente aporte.
Atte. Leo
seria interesante saber como se hace la clase propiamente dicha la que esta incluido en ese ejemplo phgp