CGI - Nach Absenden HTML
Loetzi
- perl
Hallöchen @ll,
ich habe ein CGI-Script das auch spitzenmäßig funktioniert.
Zur Zeit ist es so, das nachdem Absenden eine im CGI festgelegte
Seite erscheint. Ich möchte aber, das nun eine völlig
neue Seite angezeigt wird. Ich möchte prktisch nur wissen,
wie man auf eine extrene HTML-Seite linkt. Ich kann nirgendwo den Befehl finden den ich da einbauen muss.
Ich möchte prktisch nur wissen, wie man auf eine extrene HTML-Seite linkt. Ich kann nirgendwo den Befehl finden den ich da einbauen muss.
Elegant: http://perldoc.perl.org/CGI.html#GENERATING-A-REDIRECTION-HEADER
Zu Fuß: print "Location: http://www.example.org/foobar.html\n\n";
War's das?
Siechfred
Fast, mein CGI Code schaut so aus:
sub html_header{
$document_title= $_[0];
print "Content-type: text/html; charset=ISO-8859-1\n\n";
print "<HTML>\n";
print start_html(-head=>Link({-rel=>'next', -href=>'http://www.meinedomain.de/test.htm'}));
}
Leider wird nur eine leere Seite angezeigt (Der Link ist nur ein beispiel). Vielleicht sollte ich noch erwähnen, das das ganze in einem Frameset passiert. Aber wir sind schonmal nah dran.
Fast, mein CGI Code schaut so aus:
Was heißt fast?
Dein Code ist falsch und entspricht keinem der zwei Vorschläge von Siechfred.
Struppi.
Ja dann kann es ja auch nicht gehen.
Wie gesagt das Formular wird abgeschickt
und es erscheint eine leere HTML Seite.
Wo liegt der Fehler? Und wie müsste es korrekt lauten?
Wer kann mir helfen.
Wo liegt der Fehler? Und wie müsste es korrekt lauten?
https://forum.selfhtml.org/?t=163739&m=1066427
Struppi.
Zu Fuß: print "Location: http://www.example.org/foobar.html\n\n";
Ja, das habe ich ja verstanden, aber an welche stelle schreibe ich das?
Wenn ich einfach Print "Loc.... In den Tag schreibe, passiert nichts.
Wie müsste das denn komplett lauten? Da kommt doch bestimmt noch was vor und was nach?
Zu Fuß: print "Location: http://www.example.org/foobar.html\n\n";
Egal wo ich den tag hinsetze, es klappt nicht.
mein script schaut so aus.
########
########
sub html_header{
print "Content-type: text/html; charset=ISO-8859-1\n\n";
print "Location: http://www.example.org/foobar.html\n\n";
print "<HTML>\n";
print "<HEAD>\n";
print "</HEAD>\n";
print '<BODY text="#C80000" bgcolor="#FFFFFF" link="#0000EE" vlink="#505050" alink="#FF0000">',"\n";
print "<P>\n";
}
Wo liegt denn nun der Fehler?
Hi,
Wo liegt denn nun der Fehler?
Du darfst vor print "location...", keinen header senden, ein header ist fertig, sofern die Leerzeile kommt.
Also:
print "Status: 302 Moved\n"; # steht _im_ header
print "location: $url\n\n"; # header abgeschlossen, leerzeile folgt
Hotte
Hallo Hotte,
ich stehe etwas auf dem Schlauch.
In meinem Code habe ich jetzt die Zeilen von Dir eingefügt.
Das CGI wird abgeschickt und es wird eine leere Seite angezeigt.
wo trage ich meine url ein?
# Folgendes sieht der User nach Bearbeitung des Scipts auf seinem Schirm:
print "Status: 302 Moved\n"; # steht _im_ header
print "location: $url\n\n"; # header abgeschlossen, leerzeile folgt
DANKESCHÖN AN ALLE, ICH HABE ES GESCHAFFT, JUHUUUUUU
DANKESCHÖN AN ALLE, ICH HABE ES GESCHAFFT, JUHUUUUUU
Prima! Aber denke ja nicht, dass es dabei bleibt ;-)
Hier mal was zum Nachlesen: http://rolfrost.de/control.html zum Thema CGI und Parameterkontrolle (Kontrollstrukturen), ich vermute, da hast Du noch einen kleinen Bedarf zu.
Viele Grüße,
Hotte
sub html_header{
print "Content-type: text/html; charset=ISO-8859-1\n\n";
Welchen Zweck hat ein Content, wenn du weiterleitest?
Struppi.
Hallo,
Zu Fuß:
print "Location: http://www.example.org/foobar.html\n\n";
Machs besser so:
[code lang_perl]
sub redir{
my $url = shift;
print "Status: 302 Moved\n";
print "location: $url\n\n";
return;
}
[/code]
Hotte
Hallo Hotte,
weiter unten im Thread steht mein gesamter Code,
wo baue ich deinen Code ein. Muss ich meinen gesamten Code ersetzten.
Hallo,
Zu Fuß:
print "Location: http://www.example.org/foobar.html\n\n";
Machs besser so:
[code lang_perl]einfache Umleitung
sub redir{
my $url = shift;
print "Status: 302 Moved\n";
print "location: $url\n\n";
return;
}
[/code]Hotte
Zu Fuß:
print "Location: http://www.example.org/foobar.html\n\n";
Machs besser so:
[...]
print "Status: 302 Moved\n";
Warum sollte man hier einen 302er schicken?
Siechfred
Hallo,
Zu Fuß:
print "Location: http://www.example.org/foobar.html\n\n";
Machs besser so:
[...]
print "Status: 302 Moved\n";Warum sollte man hier einen 302er schicken?
Es kann auch ein 301er sein, je nachdem. Auf jeden Fall ist es sauberer, den richtigen Status im header mitzugeben, manche Webserver melden sonst Fehler.
Viele Grüße,
Hotte
print "Status: 302 Moved\n";
Warum sollte man hier einen 302er schicken?
Es kann auch ein 301er sein, je nachdem. Auf jeden Fall ist es sauberer, den richtigen Status im header mitzugeben, manche Webserver melden sonst Fehler.
Achso, ja, so gesehen hast Du Recht.
Siechfred