Página 1 de 1

Paso de parámetros en Perl / Manejo de sesiones

NotaPublicado: 2012-03-20 13:18 @596
por dolisguilarte
Buenas tardes,

Necesito pasar los parámetros de un cgi a otro pero no he podido tener un ejemplo sencillo que me permita aclarar.

Resulta que tengo dos variables que llegan al sitio (son pasados desde la intranet y no tengo acceso para ver cómo la envía) Realmente es una variable de session y una cookie que recibo en dos parámetros, pero no sé cómo pasarle esos dos valores a otro cgi. Esto no sé si puedo manejarlo con variables de session para no tener que estar pasándolos por parámetros. Lo que pasa es que no sé cómo hacerlo ni por uno ni por otro :(

Este es mi código que tienen la variables $cookie y $sesion. Necesito poder acceder a esas dos variables más adelante en la aplicación. No sé cómo mantenerla persistente, bien por sesión o bien pasándolo por parámetro.

use CGI::Session;
use CGI qw/:standard/;
use SIE::GeneralCgi;
$sessionDir = $ini->get(['ARCHIVO', 'SESSION']);
my $session = new CGI::Session( 'driver:File', undef, { Directory => $sessionDir } );
$CGISESSID = $session->id();

my $cookie = param('cookie');
my $sesion = param('sesion');

if (!$cookie || !$sesion) {
if ($session->is_new) {
print "content-type: text/html\n\n";
print "<br><H1><b>Sistema de Indicadores Estratégicos.</b></H1>";
print "<br><br><H2><b>Error: Sesión no iniciada.</b></H2>";
print "<meta http-equiv='refresh' content='3;URL=logout.cgi'>";
exit;
}
}

if (!$session->is_new){
$session->delete();
}

if ($session->is_new){
my $results = $datos->acceso_unico($cookie, $sesion);
$id_usuario = @$results[0]->{id};
$nombres = @$results[0]->{nombres};
$apaterno = @$results[0]->{apaterno};
$login = @$results[0]->{usuario};
$id_perfil = @$results[0]->{id_perfil} || 0;
$session->param('id_usuario', $id_usuario);
$session->param('nombres', $nombres);
$session->param('apaterno', $apaterno);
$session->param('login', $login);
$session->param('id_perfil', $id_perfil);
$session->param('id_nivel_acceso', '-100');
}

if (!$session->param('id_usuario'))
{
print "content-type: text/html\n\n";
print "<br><H1><b>Sistema de Indicadores Estratégicos.</b></H1>";
print "<br><br><H2><b>Error: Sesión inválida.</b></H2>";
print "<meta http-equiv='refresh' content='3;URL=logout.cgi'>";
exit;
}
if (!$session->param('id_perfil'))
{
print "content-type: text/html\n\n";
print "<br><H1><b>Sistema de Indicadores Estratégicos.</b></H1>";
print "<br><br><H2><b>Error: Usuario sin perfil asociado.</b></H2>";
print "<meta http-equiv='refresh' content='3;URL=logout.cgi'>";
exit;
}

$cookie_session = cookie(-name=>'CGISESSID',-value=>$session->id());
print header(-cookie=>$cookie_session);
print "<meta http-equiv='refresh' content='0;URL=main_frame_access.cgi'>";




**************************************************************************
Este es el otro archivo main_frame_access.cgi que es donde necesito utilizar las dos variables indicadas arriba:

use CGI::Session;
use CGI qw/:standard/;
use SIE::GeneralCgi;
use HTMLTMPL;

$IdUsuario = $datos->{session}->{id_usuario};
$IdPerfil = $datos->{session}->{id_perfil};
$login = $datos->{session}->{login};

$strUrlToolBar = 'main_access.cgi';
$strUrlMain = 'access.cgi';

$templ = new HTMLTMPL;

$templ->src($ini->get(['ARCHIVO', 'TPL']).'\main_frame.html');
$templ->url_toolbar("$strUrlToolBar");

$templ->url_main("$strUrlMain");
$templ->output('Content-Type: text/html');

Re: Paso de parámetros en Perl / Manejo de sesiones

NotaPublicado: 2012-03-20 15:05 @670
por explorer
¿Los dos cgi están en el mismo servidor, uno al lado del otro?

Podríamos llamar al segundo con un qx(), para ejecutarlo, pasando los argumentos por la línea de órdenes. El segundo los leería a través del array @ARGV.

Y le capturas la salida html generada, y la agregas a la salida generada del primero (o la descartas completamente, si no lo necesitas).

my $salida_del_segundo_cgi = qx(segundo_cgi.pl $cookie $session);

Naturalmente, esto se puede hacer solo si $cookie y $session fueran cadenas de caracteres, y sin espacios en blanco.

Re: Paso de parámetros en Perl / Manejo de sesiones

NotaPublicado: 2012-03-22 13:29 @603
por dolisguilarte
Ok... Gracias... Resuelto...