SSI in Perl
Florian Auer
- perl
Hallo,
ich habe da so ein Forums-Script, das eine Datei hat, wo der obere Teil der Seite und der untere Teil definiert ist. In der mitte ist das Script. Wie kann ich aus einem Perl-Script heraus einen Code kenzeichnen, dass er als shtml erkannt wird?
MfG und danke Florian Auer
Hi,
ich habe da so ein Forums-Script, das eine Datei hat, wo der obere Teil der Seite und der untere Teil definiert ist. In der mitte ist das Script. Wie kann ich aus einem Perl-Script heraus einen Code kenzeichnen, dass er als shtml erkannt wird?
sehe ich das richtig, daß Du ein Dokument aus einem Perlscript heraus an STDOUT printest und hier noch SSI einbauen willst? Wenn ja, dann geht das zumindest nicht so, wie Du Dir das vorstellst: Ein Script ist bereits "server parsed" und kann nicht noch einmal geparsed werden.
Du kannst die entsprechenden SSI-Scripts allerdings mittels require einbinden. Es empfiehlt sich allerdings, das Script dann in eine Subroutine zu packen, welche Du an geeigneter Stelle aufrufst. Es sollte keinen Header mehr ausgeben (ist ja schon da...) und muß natürlich require-fähig sein, also auf die Zeile "1;" enden.
HTH
Cheatah
dieses per SSI eingebundene ist eine HTML-Datei !!!
MfG Auer
Hallo Florian,
dieses per SSI eingebundene ist eine HTML-Datei !!!
Dann lies die Datei doch einfach mit Perl-Befehlen ein und gib sie aus:
open(LOGFILE, "<deine.html"); @dh = <LOGFILE>; close LOGFILE;
foreach $line (@dh) { print $line; }
Gruß
Christian Schnagl
Hallo Florian,
dieses per SSI eingebundene ist eine HTML-Datei !!!
Dann lies die Datei doch einfach mit Perl-Befehlen ein und gib sie aus:
open(LOGFILE, "<deine.html"); @dh = <LOGFILE>; close LOGFILE;
foreach $line (@dh) { print $line; }Gruß
Christian Schnagl
nur leider funktionieren dann die SSI nicht mehr ...
Dann lies die Datei doch einfach mit Perl-Befehlen ein und gib sie aus:
open(LOGFILE, "<deine.html"); @dh = <LOGFILE>; close LOGFILE;
foreach $line (@dh) { print $line; }
nur leider funktionieren dann die SSI nicht mehr ...
Das ist klar. (Im Apache-Handbuch steht dazu: Wer sowieso CGI kann, der kann die paar Ersetzungen von SSI auch selbst programmieren.)
Geht es aber nicht vielleicht andersherum? Will sagen: Statt SSI in ein per CGI generiertes Dokument einzubinden, kannst Du doch auch das Hauptdokument SSI sein lassen (dann funktionieren Kopf- und Schwanzbereich) und den CGI-Teil per SSi-EXEC in der Mitte einbinden. Genau dafür ist SSI-EXEC nämlich da: Um eine CGI-Ausgabe in ein Dokument einfließen zu lassen und dennoch diesem alle sonstigen Möglichkeiten zu belassen.
Natürlich kann ich das!
Ich ahe die Seite auch schon gemacht!
Nur leider will Xitami den Befehl <!--exec cgi="..."--> nicht ausführen, da dieser befehl von Xitami 2.4 scheinbar nicht unterstützt wird. Und somit kann ich das nicht offline testen, was nicht besonders gut für meine Telefonrechnung ist. Die anderen funktionieren!
MfG Florian Auer
Nur leider will Xitami den Befehl <!--exec cgi="..."--> nicht ausführen, da dieser befehl von Xitami 2.4 scheinbar nicht unterstützt wird. Und somit kann ich das nicht offline testen, was nicht besonders gut für meine Telefonrechnung ist. Die anderen funktionieren!
Hm. Xitami kenne ich nicht (StefanM???), aber wenn der SSI unterstützt, sollte er auch SSI-EXEC unterstützen. Ich kann mir aber gut vorstellen, daß es auf jedes einzelne Zeichen der Syntax ankommt - ich habe schon Webserver gesehen, bei denen das HTML-Kommentarzeichen nicht <!--, sondern nur <!- war oder was auch immer.
Ich vermute, einen Blick ins Handbuch des Webservers sollte das wert sein - das ist weniger aufwendig als eine programmierte Lösung. (Überhaupt: Im Zweifelsfalle immer erst mal den Server machen lassen, wenn man selbst Webmaster ist.)
Und wenn es *wirklich* nicht geht, würde ich mal ernsthaft über einen Apache-Server nachdenken ...
Hi,
dieses per SSI eingebundene ist eine HTML-Datei !!!
dann verstehe ich leider nicht, worauf Du hinauswillst. Für SSI muß Deine Datei vermutlich auf .shtml enden (frag Deinen Provider), und das eingebundene Script muß auch entsrpechende Voraussetzungen erfüllen (Header ausgeben etc.). Oder was meinst Du?
Cheatah