[perl] Redireccionar a otro URL

Sergio Tirado stirado@campus.gym.itesm.mx
Thu, 16 Mar 2000 11:46:05 -0700


En http://www.gym.itesm.mx/encuesta/ tengo funcionando un pequeño script de perl para validar a un usuario y dejarlo entrar a contestar una encuesta. Lo único que me falta para terminarlo es redireccionar a otro URL. 

Según yo con un print "Location: $url \n\n"; después de cerrar el código HTML con el comando print end_html; tengo, pero no me esta funcionando.

Aqui esta el programa con con un comentario marcado en donde debo poner el código para redireccionar. Si alguien me puede ayudar se los agradecería.

P.D. Un usuario válido sería la matrícula 420990 y password v4uv8rGCi.

#!/usr/bin/perl
use CGI qw/:standard :html3/;
use DBI();

print header;
print start_html(-bgcolor=>'white',-title=>'EvaluaNet, Bienvenido');
valida_usuario();
print_form();
print end_html;

sub valida_usuario {
   if (param) {
     $pwd = param('password');
     if (&valida_matricula(param('matricula'),param('password')) == 1) {
       if (&valida_password(param('matricula'),param('password')) == 1) {
       
         ##############################
         ## REDIRECCIONAR A OTRO URL 
         ##############################
         $errorMsg = "<FONT color='#00cc66'><B>usuario válido</B></FONT>";
         
       } else {
         $errorMsg = "<FONT color='#00cc66'><B>password no válido</B></FONT><BR><FONT color='#3399cc'><B>vuelve a intentar</B></FONT>";
       }
     } else {
       $errorMsg = "<FONT color='#00cc66'><B>matrícula no válida</B></FONT><BR><FONT color='#3399cc'><B>vuelve a intentar</B></FONT>";
     }
   } else {
     $errorMsg = "";
   }
}

sub valida_matricula {
   local($mat,$pas) = @_;
   my $mat = param('matricula');
   my $pas = param('password');

   my $dbh = DBI->connect("DBI:mysql:encuesta;localhost", "root", "flaco");
   my $query = "SELECT matricula,carrera_id FROM alumno WHERE matricula=$mat";
   my $output = $dbh->prepare($query);
   $output->execute;

   my ($dbmat,$dbcar) = $output->fetchrow;
   
   $output->finish();
   $dbh->disconnect();

   if ($mat=$dbmat) {
     0 + 1;
   } else {
     -1 + 1;
   }
}

sub valida_password {
   local($mat,$pas) = @_;
   my $mat = param('matricula');
   my $pas = param('password');

   my $dbh = DBI->connect("DBI:mysql:encuesta;localhost", "root", "flaco");
   my $query = "SELECT matricula,password FROM password WHERE matricula=$mat";
   my $output = $dbh->prepare($query);
   $output->execute;

   my ($dbmat,$dbpas) = $output->fetchrow;

   $output->finish();
   $dbh->disconnect();

   if ($pas=$dbpas) {
     0 + 1;
   } else {
     -1 + 1;
   }
}

sub print_form {
     @ss=('<br>');                     # Single Space
     @ds=('<br>','&nbsp;','<br>');     # Double Space

     print p({-align=>center},
       img({-src=>'evaluanet.gif',-align=>center}),
       @ss,
       start_form,
       table({-border=>'0'},
         Tr({-align=>right,-valign=>center},
           [
             td(['Matr&iacute;cula',textfield(-name=>'matricula',-size=>10,-maxlength=>6,-value=>'',-override=>1)]),
             td(['Password',password_field(-name=>'password',-size=>10,-value=>'',-override=>1)])
           ]
         )
       ),
       @ss,
       submit(-name=>'Entrar'),
       @ds,
       $errorMsg,
       end_form,
     );
}

--
Sergio Tirado Ochoa
Director de Informática
ITESM Campus Guaymas

--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : unsubscribe perl