{: 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