{: NES 0.9 none :} {: # ---------------------------------------------------------------------------- NES 0.9 beta by - Skriptke Copyright 2009 - 2010 Enrique F. Castañón Licensed under the GNU GPL. http://sourceforge.net/projects/nes/ Sample to use Nes; ---------------------------------------------------------------------------- :}
Muestra un Captcha.
Para cargar cualquier Plugin debemos añadirlo a la lista de script de nuestro archivo nhtml:
{: NES 1.0 ('{: * cfg_plugin_top_dir :}/plugin.pl','my_file.pl') :}El orden es importante, para Captcha es necesario cargar primero:
{: NES 1.0 ('{: * cfg_plugin_top_dir :}/captcha.pl','my_file.pl') :}Si se va a incluir Captcha dentro de Forms es necesario cargar forms_captcha.pl en vez de forms.pl:
{: NES 1.0 ('{: * cfg_plugin_top_dir :}/forms_captcha.pl','my_file.pl') :} Ver: Plugin Froms, Plugins
archivo.nhtml:
{: NES 1.0 ('{: * cfg_plugin_top_dir :}/captcha.pl','archivo.pl') :} <html> <head> <title>Nes sample/title> </head> <body> ... {: & captcha (the_name,ascii) ... {: & captcha_code :} <input type="text" name="the_name" size="8" /> ... {: ~ ( * nes_captcha_plugin_fatal_error_the_name ) <b>Código incorrecto</b> :} ... :} ... </body> </html>archivo.pl:
use Nes; my $nes = Nes::Singleton->new('archivo.nhtml'); # Obtenemos la dirección del Captcha my $captcha = nes_plugin->get('captcha_plugin','the_name'); # Comprobamos que es correcto mediante la variable {'is_ok'} if ( $captcha->{'is_ok'} ) { ... } else { ... } $nes->out();
{: & captcha (name,type,digits,noise,size,sig,spc,expire,expite_last,attempts) [HTML] {: & captcha_code :} [HTML] :}
Sólo name y type son obligatorios, el resto de parámetros si no se indican se leeran de archivo de configuración o tomarán sus valores por defecto.
name:El nombre del Captcha, debe conincidir con el del campo input con el valor del Captcha:
{: & captcha (the_name,ascii) ... <input type="text" name="the_name" size="8" /> ...type:
El tipo de Captcha. En ésta versión únicamente está disponible el tipo ascii.
digits:Número de dígitos que mostrará el Captcha. Por defecto mostrará un número aleatorio de entre 5 y 7 dígitos.
noise:Cantidad de ruido, entre 0 y 9, 0 es sin ruido y 9 el máximo. Dificulta su detección por robots. Por defecto el nivel de ruido es de 2.
size:Tamaño de la fuente del Captcha. El tamaño por defecto es 2. Si size es none el Captcha se mostrará sin formato.
sig:Símbolo que se utiliza como relleno. Por defecto el Captcha mostrará un caracter al azar.
spc:Símbolo que se utiliza como fondo. Por defecto el Captcha mostrará un caracter al azar.
expire:Tiempo de expiración del Captcha a partir del cual ya no será válido. El tiempo se indica con un sufijo; s: segundos, m: minutos, h: horas, d: dias, M: meses, y: años, ej.:
30s # 30 segundos 5m # 5 minutos 1M # 1 mes* expire dentro del Plugin Forms
Cuando el Captcha va dentro del Plugin Forms, los valores de expiración se deben hacer coincidir con Forms.
attempts:En formato: número de intentos / tiempo. Es el máximo de intentos permitido, una vez llegado al máximo, en cualquier tiempo, hay que esperar el tiempo indicado o dará error aunque los datos seán válidos.
10/5 # Después de 10 intentos hay que esperar 5 minutos
El tiempo de expiración se controla mediante la variable forms_plugin_expire_attempts del archivo de configuración .nes.cfg
{: & captcha_code :}Lo colocaremos donde se desee que aparezca la imagen del Captcha:
... <td > {: & captcha_code :} </td> ...
Último mensaje lanzado por el Captcha: (se incluye para depuración)
{: * nes_captcha_plugin_(name_catpcha)_error_last :}
Cuenta del número de intentos:
{: * nes_captcha_plugin_(name_catpcha)_attempts :}
Será 1 si el Captcha es correcto:
{: * nes_captcha_plugin_(name_catpcha)_is_ok :}
Número de error del Captcha, cualquier valor no 0 indica que el Captcha no es válido:
{: * nes_captcha_plugin_(name_catpcha)_error_fatal :} 0: No hay error. (no supone que que el Captcha sea correcto) 1: La Cookie ha expirado o no existe. 2: Se ha enviado el campo sin valor. 3: Se ha alcanzado el máximo de intentos. 4: * Se ha intentado usar una Cookie ya usada. 5: No coninciden la clave del campo con la del Captcha. * El botón "Back" del Navegador puede dar este tipo de errores.
Estas variables están disponibles desde Perl como:
use Nes; my = Nes::Singleton:Singleton->new('archivo.nhtml'); # Obtenemos la dirección del Captcha my $captcha = nes_plugin->get('captcha_plugin','the_name'); # {: * nes_captcha_plugin_(name_catpcha)_error_last :} $captcha->{'last_error'}; # {: * nes_captcha_plugin_(name_catpcha)_error_fatal :} $captcha->{'fatal_error'}; # {: * nes_captcha_plugin_(name_catpcha)_attempts :} $captcha->{'attempts'}; # {: * nes_captcha_plugin_(name_catpcha)_is_ok :} $captcha->{'is_ok'};
# Nombre del campo input del formulario que controla el Captcha captcha_plugin_start = nes_captcha_start # tiempo suficiente para rellenar el formulario, 15m son 15 minutos # sufijo tiempo: s: segundos, m: minutos, h: horas, d: dias, M: meses, y: años captcha_plugin_expire = 15m captcha_plugin_digits = 0 captcha_plugin_noise = 2 captcha_plugin_size = 2 captcha_plugin_sig = captcha_plugin_spc = # sufijo del archivo temporal captcha_plugin_suffix = .captcha_plugin_tmp # número maximo de intentos / minutos # 10/5 es 10 intentos en cualquier tiempo, despues de 10 intentos tendrá # que esperar 5 minutos para volver a intentarlo o dará error captcha_plugin_max_attempts = 10/5 # tiempo de expiración de los archivos temporales # guarda el valor de attempts durante el tiempo indicado aquí captcha_plugin_expire_attempts = 1h
Puedes ver un ejemplo real: comentario