Ausgabe einer HTML-Seite
Harald Gabler
- perl
0 Stefan Muenz0 Rolf0 Stefan Muenz0 Rolf
0 Harald Gabler0 Cheatah
0 Mirko0 Harald Gabler0 Jörk Behrends0 Mirko
Hallo!
Ich möchte eine bestehende HTML-Seite mit einem Pearl-Script ausgeben. Leider bekomme ich es nicht richtig hin.
$confirmreal = "http://www.domain.de/seite.htm";
print "Location: $confirmreal\n\n";
Im Browser sieht man dann nur die Zeile
Location: http://www.domain.de/seite.htm
Kann mir jemand verraten wie es richtig funktioniert?
Vielen Dank
Harald
Hallo Harald
$confirmreal = "http://www.domain.de/seite.htm";
print "Location: $confirmreal\n\n";
Im Browser sieht man dann nur die Zeile
Location: http://www.domain.de/seite.htm
Kann mir jemand verraten wie es richtig funktioniert?
Zuerst solltest du ausgeben:
print "content-type: text/html\n\n";
viele Gruesse
Stefan Muenz
Hallo Harald
$confirmreal = "http://www.domain.de/seite.htm";
print "Location: $confirmreal\n\n";
Im Browser sieht man dann nur die Zeile
Location: http://www.domain.de/seite.htm
Kann mir jemand verraten wie es richtig funktioniert?Zuerst solltest du ausgeben:
print "content-type: text/html\n\n";
viele Gruesse
Stefan Muenz
Moin,
ich bin mir jetzt nicht ganz sicher, aber wenn Du mit print location arbeiten möchtest, sollte die Datei auch lokal auf dem Server liegen und die Zeile
print "content-type: text/html\n\n";
sollte in diesem Falle eben NICHT notiert werden.
Soll das Dokument über HTTP "kommen", dann schau mal in die PERL-DOKU, was die Module HTTP und LWP so bieten.
http://www.activestate.com/activeperl/docs/
RadlerWadeln grüßen ;-) Rolf
Hallo Rolf
ich bin mir jetzt nicht ganz sicher, aber wenn Du mit print location arbeiten möchtest, sollte die Datei auch lokal auf dem Server liegen und die Zeile
print "content-type: text/html\n\n";
sollte in diesem Falle eben NICHT notiert werden.
Kann auch sein - diese Location-Geschichte finde ich in der Perl-Doku nirgends beschrieben. Aus einem Beispiel, das hier in der Vergangenheit gepostet wurde, hatte ich die Sache mit dem voranstehenden HTTP-Header-Befehl. Waere aber nicht schlecht, wenn das Thema mal endgueltig aufgeklaert wuerde!
viele Gruesse
Stefan Muenz
Hallo Rolf
ich bin mir jetzt nicht ganz sicher, aber wenn Du mit print location arbeiten möchtest, sollte die Datei auch lokal auf dem Server liegen und die Zeile
print "content-type: text/html\n\n";
sollte in diesem Falle eben NICHT notiert werden.Kann auch sein - diese Location-Geschichte finde ich in der Perl-Doku nirgends beschrieben. Aus einem Beispiel, das hier in der Vergangenheit gepostet wurde, hatte ich die Sache mit dem voranstehenden HTTP-Header-Befehl. Waere aber nicht schlecht, wenn das Thema mal endgueltig aufgeklaert wuerde!
viele Gruesse
Stefan Muenz
Hallo,
sehr diplomatisch Deine Antwort Stefan...
hier stehts:<luja>
http://www.jmarshall.com/easy/cgi/cgi_footnotes.html#samples
</luja>
Regnerische Grüße aus EF, Rolf
Hallo Rolf
http://www.jmarshall.com/easy/cgi/cgi_footnotes.html#samples
Prima! das ist doch was!
viele diplomatische Gruesse ;-)
Stefan Muenz
Hallo Stefan!
Zuerst solltest du ausgeben:
print "content-type: text/html\n\n";
Obwohl es anscheinend nicht notwendig ist, habe ich es mit print "content-type: text/html\n\n"; probiert. Auch das wird nur als Text ausgegeben. Seltsam?!
content-type: text/html Location: http://www.domain.de/seite.htm
Konkret geht es um das Gaestebuch von Selena Sol. Dort wird die Bestaetigungsseite dynamisch generiert. Ich wollte aber eine bestehende Seite ausgeben.
Also vielen Dank an dich und Rolf.
Harald
Hi,
print "content-type: text/html\n\n";
Obwohl es anscheinend nicht notwendig ist, habe ich es mit print "content-type: text/html\n\n"; probiert. Auch das wird nur als Text ausgegeben. Seltsam?!
content-type: text/html Location: http://www.domain.de/seite.htm
Konkret geht es um das Gaestebuch von Selena Sol. Dort wird die Bestaetigungsseite dynamisch generiert. Ich wollte aber eine bestehende Seite ausgeben.
in dem Script wird offenbar schon vorher ein Content-type ausgegeben. Suche und entferne ihn!
Cheatah
Hallo!
$confirmreal = "http://www.domain.de/seite.htm";
print "Location: $confirmreal\n\n";Im Browser sieht man dann nur die Zeile
Location: http://www.domain.de/seite.htm
Eigentlich sollte das so funktionieren, jedenfalls tut es das bei mir schon seit über 'nem Jahr...
Hast du vielleicht irgendetwas vor dem "print ..." stehen, z.B. irgendeinen Funktionsaufruf, der "Content-type: text/html\n\n" ausgibt?
Denn sonst würde schlimmstenfalls ein 501 (Server error) kommen, weil dem Server der http-Header fehlen würde.
Ciao,
Mirko
Hallo Mirko!
Hast du vielleicht irgendetwas vor dem "print ..." stehen, z.B. irgendeinen Funktionsaufruf, der "Content-type: text/html\n\n" ausgibt?
Super, genau das ist es. Bei dem Script handelt es sich um das Gaestebuch von Selena Sol und dort steht gleich zu Beginn print "Content-type: text/html\n\n"; um die Fehlermeldungen des Scripts anzuzeigen. Nachdem ich die Zeile auskommentiert hatte, wurde die Seite sofort angezeigt.
Jetzt stellt sich mir aber die Frage, welche Content-types muss ich angeben, damit die Fehlermeldung und die HTML-Datei angezeigt werden? Vielleicht kannst du mir noch einen Hinweis geben.
Viele Gruesse
Harald
Hallo Harald
Hast du vielleicht irgendetwas vor dem "print ..." stehen, z.B. irgendeinen Funktionsaufruf, der "Content-type: text/html\n\n" ausgibt?
Super, genau das ist es. Bei dem Script handelt es sich um das Gaestebuch von Selena Sol und dort steht gleich zu Beginn print "Content-type: text/html\n\n"; um die Fehlermeldungen des Scripts anzuzeigen. Nachdem ich die Zeile auskommentiert hatte, wurde die Seite sofort angezeigt.
Jetzt stellt sich mir aber die Frage, welche Content-types muss ich angeben, damit die Fehlermeldung und die HTML-Datei angezeigt werden? Vielleicht kannst du mir noch einen Hinweis geben.
Tja, die HTTP-Header!
Wenn Du "Inhalt" ausgeben möchtest, also z.B. die Fehlermeldungen, muß dieser erst entsprechend durch den HTTP-Header deklariert werden. Das geschieht dann mit
print "Content-type: text/html\n\n";
\n\n schließt dabei den Header ab. Alles was nun folgt ist Inhalt.
Wenn Du per location den Browser anweisen möchtest, eine andere Seite anzuzeigen, so muß dies im Header passieren, also _bevor_ dieser mit \n\n abgeschlossen wurde ...
Eigentlich gibt es da keine allgemeine Variante für beide Fälle. Du mußt also selbst zwischen beiden unterscheiden.
Als einzige Möglichkeit fällt mir ein, daß Du den Header am Anfang des Programmes _nicht_ abschließt (d.h. mit print "Content-type: text/html\n";) im Gegenzug aber _jede_ mögliche Fehlermeldung mit einem oder zwei \n beginnst ...
Jörk
Hallo,
Jetzt stellt sich mir aber die Frage, welche Content-types muss ich angeben, damit die Fehlermeldung und die HTML-Datei angezeigt werden? Vielleicht kannst du mir noch einen Hinweis geben.
....
Eigentlich gibt es da keine allgemeine Variante für beide Fälle. Du mußt also selbst zwischen beiden unterscheiden.
So isses.
Wenn ein "Location:" im Header auftaucht, wird eben an diese Seite weitergeleitet, was danach kommt, ist dann egal... du kannst dadurch auch nur *ein* "Location:" verwenden (keine Ahnung was die Browser machen, wenn mehrere kommen. Je nach Programmierung wird vermutlich die erste oder letzte URL genommen...).
Für deinen Fall würde ich die Datei einfach mit
open(FEHLER,"<fehler.html");
print <FEHLER>;
close(FEHLER);
im Script ausgeben.
Als einzige Möglichkeit fällt mir ein, daß Du den Header am Anfang des Programmes _nicht_ abschließt (d.h. mit print "Content-type: text/html\n";) im Gegenzug aber _jede_ mögliche Fehlermeldung mit einem oder zwei \n beginnst ...
Mal abgesehen davon, daß Content-type: und Location: eigentlich nicht zusammen auftreten sollten, ist das meiner Meinung nach doch etwas umständlich...
Ciao,
Mirko