• Publicidad

Paso de parámetros en Perl / Manejo de sesiones

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Paso de parámetros en Perl / Manejo de sesiones

Notapor dolisguilarte » 2012-03-20 13:18 @596

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');
dolisguilarte
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2012-03-07 16:33 @731

Publicidad

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

Notapor explorer » 2012-03-20 15:05 @670

¿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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

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

Notapor dolisguilarte » 2012-03-22 13:29 @603

Ok... Gracias... Resuelto...
dolisguilarte
Perlero nuevo
Perlero nuevo
 
Mensajes: 21
Registrado: 2012-03-07 16:33 @731


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados