Wie kann ich die Umleitung der client von einem CGI-Seite zu einer anderen, mit Hilfe von Perl?
Mein problem ist Folgendes. Nachdem das Passwort als gültig anerkannt, muss ich umleiten, um main.cgi
aber ich erhalte die Meldung:
Status: 302 Found
Location: http://localhost/cgi-bin/Main.cgi
Ich weiß, der Grund dafür ist, dass ich Schreibe diese Anweisung nach Content-Type
so ist es auch mit der Einnahme dieses als HTML und drucken Sie es auf dem Bildschirm. Ich bin ein Neuling auf Perl. Kann jemand bitte helfen Sie mir, finden Sie die Lösung für dieses und dass mein code so funktioniert wie ich es will? Oder Sie schlagen mir einen alternativen code für diese oder irgendwelche Links, die mir dabei helfen können.
#!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
Habe nicht wirklich gesehen, wie du gesagt hast, du neu bist und dies hat viele wohlgeformte Probleme, aber print " content-type später auf, wenn Sie wissen, dass das der Fall ist.
HEY vielen DANK... ich hatte es jst vor dem drucken<<END1...es funktioniert perfekt navigieren, um die intendented Seite..bt, wenn ich ein Falsches Kennwort eingeben dann statt dispalying "Passwort ungültig"..die Seite wird immer aktualisiert htep al..ich habe versucht, puttin es jst abve die Anweisung print "ungültiges Passwort";,,bt seine Angabe ein FEHLER : INTERNAL SERVER ERROR,,,,,,wen ich überprüft, der Fehler meldet, dann ths s wat fand ich heraus,.."malformed header from script. Bad header=<HTML>: - Login.cgi -",..DAS IST EIN NEUES PROBLEM JETZT...bitte helft mir es zu lösen, wenn es gelöst bekommt dann jedes problem in meinem Programm ist aussortiert...
mögliche Duplikate von Umleitung von einem CGI-Seite zu einer anderen
HEY vielen DANK... ich hatte es jst vor dem drucken<<END1...es funktioniert perfekt navigieren, um die intendented Seite..bt, wenn ich ein Falsches Kennwort eingeben dann statt dispalying "Passwort ungültig"..die Seite wird immer aktualisiert htep al..ich habe versucht, puttin es jst abve die Anweisung print "ungültiges Passwort";,,bt seine Angabe ein FEHLER : INTERNAL SERVER ERROR,,,,,,wen ich überprüft, der Fehler meldet, dann ths s wat fand ich heraus,.."malformed header from script. Bad header=<HTML>: - Login.cgi -",..DAS IST EIN NEUES PROBLEM JETZT...bitte helft mir es zu lösen, wenn es gelöst bekommt dann jedes problem in meinem Programm ist aussortiert...
mögliche Duplikate von Umleitung von einem CGI-Seite zu einer anderen
InformationsquelleAutor sonya | 2010-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den redirect:
funktioniert nur, wenn es die erste Sache, die zurück an den browser gesendet. Denn Sie versenden diese erste:
den redirect behandelt wird, als Inhalt.
(Die Umleitung zu sein, die erste Sache, die Sie senden, denn es gehört in den HTTP-Header der Antwort. Durch den Druck Ihrer
\n\n
Sie sind explizit die Beendigung dieser Header. Nach, dass alles, was Sie senden, Inhalte vom browser angezeigt wird.)InformationsquelleAutor RichieHindle
möchten Sie vielleicht versuchen,
der trick ist
CONTENT=\"1
Verzögerung Seite umleiten für etwa eine SekundeIch hatte das gleiche problem, also dieser trick hat bei mir ziemlich gut.
Der code ist nicht hübsch, aber es funktioniert.
InformationsquelleAutor Batusai Jack
Finden Sie in der folgenden, hoffentlich geben Ihnen eine gute Vorstellung darüber, wie die Kontrolle zu behalten flow "rechts" und wird Ihnen helfen, genau das Stück was tun und was tun sollte, in Ihrer form:
Nie Verstand, die Sie nie benutzen Sie den "Login" - parameter... die oben genannten führt die Umleitung wie Sie es wollen, zeigt den Fehler mit keine form (verwenden Sie eine
print my_form()
nach der header-Zeile, wenn Sie müssen), und sieht in der Regel ein bisschen aufgeräumter.Sie verwenden müssen, $q->header('text/plain') oben in den Gelegenheiten, wo Sie gerade darin, die Fehler und $q->header('text/html') bei der Vorstellung der form; aktualisiert
InformationsquelleAutor mfontani
Umleiten einer Seite zur anderen, verwenden Sie die folgende Methode.
Suche für mehr details über das session-Modul.
www.search.cpan.org
InformationsquelleAutor Manu Mathew Keerampanal
Der einfachste Weg ist die Verwendung des META-refresh-tag, werden Sie nicht brauchen, um regig Ihrem Kopf.
Verwenden Sie diesen code:
Meta-Refresh ist, was Sie verwenden, wenn Sie können nicht es richtig machen, als in der höchsten stimmten die Antwort in dieser Frage.
Danke, Brian, aber es war ziemlich offensichtlich, Sonya war auf der Suche für eine einfache Lösung, mit möglichst wenig re-zu schreiben, wie möglich.
InformationsquelleAutor Darren Westall