Mi problema es el siguiente. Después de la contraseña es reconocido como válido lo que necesito para redirigir a main.cgi
pero yo estoy recibiendo el mensaje como:¿Cómo puedo redirigir al cliente de una página CGI a otra usando Perl?
Status: 302 Found
Location: http://localhost/cgi-bin/Main.cgi
Sé que la razón de esto es que estoy escribiendo esta declaración después de Content-Type
por lo que está tomando esto como HTML e imprimiéndolo en la pantalla. Soy un novato para Perl. ¿Puede alguien ayudarme a encontrar la solución para esto y hacer que mi código funcione como yo quiero? O sugiérame algún código alternativo para esto o cualquier enlace que pueda ayudarme.
#!C:\perl\bin\perl.exe
use strict;
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use DBI;
my $q = new CGI;
print "Content-Type: text/html\n\n";
if ($q->param("Login")) {
my $Password = param('Password');
if (!$Password) {
print "Please Enter the Password";
} else {
my $dbh = DBI->connect(
"dbi:SQLite:DEVICE.db",
"", "",
{
RaiseError => 1,
AutoCommit => 1
}
);
my $sth = $dbh->prepare("select * from Settings where Password = ?");
$sth->execute($Password);
if (my $pass = $sth->fetchrow_hashref) {
print redirect(-url => 'http://localhost/cgi-bin/Main.cgi');
} else {
print "Invalid Password";
}
$dbh->disconnect;
}
}
print <<END1;
<HTML>
<HEAD>
<TITLE> </TITLE>
</HEAD>
<body>
<form NAME="login" METHOD="POST">
<input type="hidden" name="submit" value="Submit">
<TABLE align="center" bgcolor=#B0C4DE>
<TR>
<TD> Enter The Password And Click Login</TD>
</TR>
<TR></TR>
<TR></TR>
<TR></TR>
<TR></TR>
<TR></TR>
<TR>
<TD><b>PASSWORD</b> :<input type="password" name="Password" size="20" maxlength="15" /></TD>
</TR>
<TR></TR>
<TR></TR>
<TR></TR>
<TR></TR>
<TR></TR>
<TR>
<TR>
<TD align="center" colspan="2">
<input type="submit" name="Login" value="Login">
<input type="reset" name="submit" value="Cancel">
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
END1
Realmente no he mirado esto, como dijiste, eres nuevo y esto tiene muchos problemas de buena formación, pero imprime el tipo de contenido más adelante, si sabes ese el caso. – vol7ron
HEY GRACIAS MUCHO ... lo puse por encima de la impresión << END1 ... funciona perfectamente navegando hacia la página intencionada ... pero si ingreso la contraseña incorrecta, en lugar de mostrar "contraseña no válida" ... la página se está renovando thas al ..intenté ponerlo primero sobre la declaración imprimir "contraseña inválida"; ,, bt está dando un ERROR: ERROR INTERNO DEL SERVIDOR ,,,,,, cuando compruebe los registros de error entonces esta s wat me enteré .. "encabezado malformado de script. Bad header = : Login.cgi ", .. ESTO ES UN NUEVO NÚMERO AHORA ... por favor ayúdenme a resolverlo, si se resuelve, entonces se resuelven todos los problemas en mi programa ... – sonya
posible duplicado de [Redireccionamiento de una página CGI a otra] (http://stackoverflow.com/questions/3649762/redirecting-from-one-cgi-page-to-another) – daxim