#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use lib '../Modulos/';
use login;
use CGI qw':standard';
use CGI::Session;
use CGI::Carp qw'fatalsToBrowser warningsToBrowser';
my $tiempo_sesion = '+1d'; # Tiempo que dura la sesión (máximo)
my $tiempo_login = '+10s'; # Tiempo que dura la sesión (identificado)
my $cgi = CGI->new; # creamos el objeto CGI
my $session # creamos el objeto CGI::Session
= CGI::Session->new('driver:file', $cgi, {Directory => '/tmp/'});
if ($session->is_new) { # ¿es una nueva sesión?
$session->expire($tiempo_sesion); # Tiempo de expiración de la sesión (todo el día)
print # Presentamos la página de registro
$session->header,
$cgi->start_html(-tittle=>'Bienvenido',-style=>'../../Css/style_formulario.css', -head=>[meta({-http_equiv=>'Cache-Control', -content=>'no-cache,no-store,private',}),meta({-http_equiv=>'Pragma', -content=>'no-cache',}),],),
cabeceras_http(),
$cgi->p("Identifiquese:"),
formulario(),
$cgi->end_html,
;
terminar();
}
my $usuario = $cgi->param('login_nombre') || ''; # Vemos si se está registrando
my $passwd = $cgi->param('login_passwd') || '';
if ($usuario and $passwd and login->verificar($usuario, $passwd)) {
$session->param('~registrado', 1); # Lo marcamos como registrado
$session->expire('~registrado', $tiempo_login); # Tiempo que dura la sesión (login)
$session->param('nombre', $usuario); # Guardamos su nombre
}
if (! $session->param('~registrado')) { # ¿Ha pasado el tiempo de sesión login?
my $usuario = $session->param('nombre') || ''; # Recuperamos su nombre
$usuario = ", $usuario" if $usuario;
print
$cgi->header(),
$cgi->start_html(-tittle=>'Bienvenido',-style=>'../../Css/style_formulario.css', -head=>[meta({-http_equiv=>'Cache-Control', -content=>'no-cache,no-store,private',}),meta({-http_equiv=>'Pragma', -content=>'no-cache',}),],),
cabeceras_http(),
$cgi->p("Su sesion ha expirado$usuario. Identifiquese de nuevo:"),
formulario(),
$cgi->end_html,
;
terminar();
}
# Llegamos aquí cuando el usuario está registrado e identificado
print # presentamos una página normal
$session->header,
$cgi->start_html(-tittle=>'Bienvenido',-style=>'../../Css/style_formulario.css', -head=>[meta({-http_equiv=>'Cache-Control', -content=>'no-cache,no-store,private',}),meta({-http_equiv=>'Pragma', -content=>'no-cache',}),],),
cabeceras_http(),
$cgi->p('Gracias por su visita, ' . $session->param('nombre'). ". Dispone de $tiempo_login mas."),
$cgi->a({-href=>"formulario_institucion.pl", -Target=>"_self"},$cgi->div({-id=>"menu2"},'Agregar Institución')),
$cgi->end_html,
;
## Fin del programa
terminar();
### Subrutinas
sub formulario { # presenta un formulario muy simple
return
$cgi->start_form,
'Nombre: ',
$cgi->textfield('login_nombre'), br,
'Passwd: ',
$cgi->password_field('login_passwd'), br,
$cgi->submit,
$cgi->end_form,
;
}
sub cabeceras_http {
return
$cgi->p(
join $cgi->br, map { "$_ : " . $cgi->http($_) } sort $cgi->http()
)
;
}
sub terminar {
$session->flush();
CGI::Session->find('driver:file', sub {}, {Directory => '/tmp/'} ); # Purgamos sesiones caducadas
exit(0);
}