Tema: CGI (Interface de pasarela común)
Pregunta: Como definir el flujo del script CGI dependiendo de lo que el usuario desee ?
Respuesta: Cuando hacemos un script CGI generalmente terminamos con muchas subrutinas que se deben ejecutar en algun momento dado, dependiendo de algún hecho, como ser que el usuario esté registrado o sea un invitado. Esto se hace generalmente evaluando una variable que le pasaremos el valor desde nuestro documento HTML ya sea por get o por post.
Primero hacemos la entrada de datos tanto por get o por post:
Código:
my (@pairs,$buffer,$pair,$name,$value,%input_data);
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
@pairs = split(/&/, $ENV{'QUERY_STRING'});
}elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
}else {
&error('leer','datos');
}
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$name =~ tr/\0//d;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/\0//d;
$value =~ s/\n//g;
$input_data{$name} = $value;
}
Ahora tenemos una variable %input_data que tiene dodos los valores que le pasamos al script, ahora hay que evaluarla y dependiendo de su valor vamos a llamar a una función y otra:
Código:
if ($input_data{'action'} eq 'iniciar_sesion') {
&iniciar_sesion();
®istrar_sesion();
&imprimir_mensajes();
}
elsif ($input_data{'action'} eq 'cerrar_sesion') {
&cerrar_sesion();
}
else {
&continuar_sesion();
}
exit(1);
Como ven acá evalué la variable $input_data{'action'} que es lo que le envío desde el documento HTML