Ver Mensaje Individual
  #52 (permalink)  
Antiguo 25/08/2004, 06:38
Avatar de monoswim
monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 3 meses
Puntos: 90
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();
                 &registrar_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
__________________
Esteban Quintana