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');