Estoy trabajando con CGI::Session enviando el id de la sesión a través de un hidden, no utilizo cookies.
En el primer script creo la sesión de la siguiente forma, y se crea perfectamente.
Using perl Syntax Highlighting
my $id_session= undef;
my $sid= '';
my $session_open ='';
my $session =
new CGI::Session(undef,$id_session,{Directory=>'C:\TMP_sessions'})
or die CGI::Session->errstr;
if (defined $session) {
$session->expire('+15m');
$session->flush();
$sid= $session->id();
$session_open = 'T';
}
else {
$session_open = 'F';
}
my $sid= '';
my $session_open ='';
my $session =
new CGI::Session(undef,$id_session,{Directory=>'C:\TMP_sessions'})
or die CGI::Session->errstr;
if (defined $session) {
$session->expire('+15m');
$session->flush();
$sid= $session->id();
$session_open = 'T';
}
else {
$session_open = 'F';
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Necesito ahora saber :
1- ¿Qué es lo que envío al siguiente script para que trabaje con la sesión actual : $sid o $session?
2- Cuando el script llamado recibe el parámetro de session sea $sid o $session, ¿qué método utilizo para chequear que la sesión existe, FUE CREADA ALGUNA VEZ O EXPIRÓ ?
Yo lo estoy haciendo de la siguiente forma, PERO NO FUNCIONA:
Using perl Syntax Highlighting
sub validar_sesion {
my $sid = shift;
my $sesion_valida = '';
my $session = CGI::Session->load() or die CGI::Session->errstr();
if ( $session->is_expired() ) {
$sesion_valida = 'E';
}
else {
if ($session->is_empty()) {
$sesion_valida = 'F';
}
else {
$sesion_valida = 'T';
}
}
return ($session, $sesion_valida);
}
my $sid = shift;
my $sesion_valida = '';
my $session = CGI::Session->load() or die CGI::Session->errstr();
if ( $session->is_expired() ) {
$sesion_valida = 'E';
}
else {
if ($session->is_empty()) {
$sesion_valida = 'F';
}
else {
$sesion_valida = 'T';
}
}
return ($session, $sesion_valida);
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Bueno, muchísimas gracias nuevamente.