Rolf: Mit PERL ein HTM-Dokument zum Browser schicken

Hallo,

hier sind mal 4 Möglichkeiten, aus einem PERLScript heraus eine HTML - Seite zum Browser zu schicken - zum Ausprobieren / Diskutieren / Archivieren ;-)

1. Die Seite wird lokal geöffnet, auf ein Array gelesen und mit print wieder ausgegeben
Beispiel:
$urce = "c:/.../homepage/erfurt.htm";
open (URL, $urce);
@dok = <URL>;
close (URL);
print "content-type:text/html\n\n";#header erforderlich!
print @dok;

***

2. Holen einer Seite mit dem LWP-Modul
Beispiel:
use LWP::Simple;  
$doc = get 'http://homepage'; #was heisst hier hacken?
print "content-type:text/html\n\n";#header erforderlich!
print $doc;

***

3. Mit print location, der Benutzer wird zum anderen URL geleitet
Beispiel:
$dok = "http://homepage"; #Pfad relativ oder absolut
print "location: $dok";

4. Redirection mit CGI.PM, der Benutzer wird zum anderen URL geleitet
Beispiel:
use CGI;
$q = new CGI;
print $q->redirect('http://homepage');

***

Viel Spaß beim Ausprobieren und ein schönes Pfingstfest, Euer Rolf

  1. Hallo Rolf,

    wow - das kann man ja ohne Umwege in die Forumsauslese brginen - äh, könnte man, wenn ... ich glaub, ich mach die 1.0 vielleicht doch lieber selber fertig, sonst schreiben wir das Jahr 4000, und da steht immer noch 0.9. Oder was meint das Team dazu?

    viele Gruesse
      Stefan Muenz

    1. Hi Stefan,

      wow - das kann man ja ohne Umwege in die Forumsauslese brginen - äh, könnte man, wenn ... ich glaub, ich mach die 1.0 vielleicht doch lieber selber fertig, sonst schreiben wir das Jahr 4000, und da steht immer noch 0.9. Oder was meint das Team dazu?

      klingt gut :-)

      Wobei man bemerken muß, daß die beiden letzten Methoden im Grunde identisch sind, nur halt die letzte "richtiger" ist. Die ersten beiden Methoden ähneln sich auch sehr, haben aber den wesentlichen Unterschied, daß bei der ersteren die Datei lokal auf dem eigenen Server liegt (hier mit MS-Pfad angegeben, sollte vielleicht verallgemeinert werden *g*), die zweite die Datei von einem beliebigen Server holt. Hat alles seine Vor- und Nachteile:

      1.) Direktausgabe einer lokalen Datei
      Location-Anzeige des Browsers wird nicht geändert (weist also auf das Script), sehr schnelle Methode (nur ein Request), beliebige Datei kann übermittelt werden, also auch von außerhalb der WWW-Area (Stichwort "Secret Area").

      2.) Direktausgabe einer per http verfügbaren Datei
      Location-Anzeige des Browsers wird nicht geändert, langsame Methode, zweiter Request (innerhalb des Scripts, also nicht clientseitig), nur über http (und andere Xtp) verfügbare Dateien können übermittelt werden, Hacks fremder Dateien möglich.

      3./4.) Verweis per Location
      Location-Anzeige des Browsers ändert sich, zweiter clientseitiger Request, nur über Xtp verfügbare Dateien können übermittelt werden, keine Fehlerabfrage möglich (z.B. Error 404), kein Hack möglich, sehr schnell programmiert, keine zusätzliche Serverbelastung. Die Methode mit CGI.pm ist unbedingt vorzuziehen (z.B. wegen korrekter Ausgabe des Status).

      Mit Xtp meine ich beliebige Transfer Protocols, also http, ftp und was immer einem noch so einfällt :-)
      Als Hacks bezeichne ich hier jedwedige Bearbeitung, auch z.B. Auswertung der Daten à la Suchmaschine. Der Begriff ist also wertungsfrei gemeint.
      Tja, gibt's noch irgendwelche Unklarheiten? Man sollte vielleicht erwähnen, daß bei den ersten beiden Methoden der Header mit ausgegeben werden muß, abhängig vom Dateityp; es kann in allen Methoden theoretisch jeder Dateityp (Text, Executable, ZIP-Archiv, Grafiken, Sounds...) übergeben werden, wenn der richtige Header (bei Methode 1 und 2) übergeben wird.

      Ich hoffe, das war jetzt alles, was man wissen muß :-) Fragen bitte hier einfügen: ____________ ;-)

      Cheatah

      1. Hallo!

        1.) Direktausgabe einer lokalen Datei
        Location-Anzeige des Browsers wird nicht geändert (weist also auf das Script), sehr schnelle Methode (nur ein Request), beliebige Datei kann übermittelt werden, also auch von außerhalb der WWW-Area (Stichwort "Secret Area").

        2.) Direktausgabe einer per http verfügbaren Datei
        Location-Anzeige des Browsers wird nicht geändert, langsame Methode, zweiter Request (innerhalb des Scripts, also nicht clientseitig), nur über http (und andere Xtp) verfügbare Dateien können übermittelt werden, Hacks fremder Dateien möglich.

        3./4.) Verweis per Location
        Location-Anzeige des Browsers ändert sich, zweiter clientseitiger Request, nur über Xtp verfügbare Dateien können übermittelt werden, keine Fehlerabfrage möglich (z.B. Error 404), kein Hack möglich, sehr schnell programmiert, keine zusätzliche Serverbelastung. Die Methode mit CGI.pm ist unbedingt vorzuziehen (z.B. wegen korrekter Ausgabe des Status).

        Bei allen Methoden sollte/muß man auch noch abwägen, was denn mit Folgelinks passieren soll. Wenn ich z.B. mit Methode 2 eine Webseite aus dem Netz hole und dort relative und absolute Links auf Folgeseiten bzw. Bilder enthalten sind. Meist möchte man dann auch, daß der Nutzer des Skriptes diese Bilder auch sehen kann ...

        Hier sind wiederum zwei Methoden zu unterscheiden:
        1.) Das Skript liefert lediglich eine Seite; die Folgezugriffe soll der Browser direkt an die gewünschten Resourcen stellen. Dies ist bei absoluten Links gar kein Problem. Für releative
        Links sollte man sein Skript so erweitern, daß ein bestehendes BASE-Tag angepaßt bzw. eines eingefügt wird.

        2.) Das Skript liefert eine Seite UND die Folgeseiten. In diesem Falle muß das Skript mit
        Path_Info umgehen können:
        Ich bekomme z.B. meine Einstiegsseite per www.washammadennheu.de/cgi-bin/skript/index.html
        Das Skript bekommt aus der Umgebungsvariablen PATH_INFO die Information '/index.html' - kann nun z.B. aus einer secrect-area oder von einem anderen Server die index.html besorgen und ausgeben. Ein dort enthaltener link auf 'bilder/atlantis.gif' wird dann zum Aufruf
        www.washammadennheu.de/cgi-bin/skript/bilder/atlantis.gif
        usw.

        Bei beiden Methoden mach dummerweise die absoluten Links Probleme, wenn sie z.B. auf
        die "alte" Herkunft zeigen. Ich besorge mir z.B. die oben genannte index.html von www.misterx.gov,
        das Bild ist per '/bilder/atlantis.gif' oder gar 'http://www.misterx.gov/bilder/atlantis.gif' eingebunden. Dann erhalte ich anstelle von www.washammadennheu.de/cgi-bin/skript/bilder/atlantis.gif
        www.washammadennheu.de/bilder/atlantis.gif oder http://www.misterx.gov/bilder/atlantis.gif
        Beides unter Umständen nicht so gewollt. Also heißt es hier Links innerhalb von HTML-Seiten
        suchen und anpassen ...

        Jörk

    2. Hallo Stefan!

      ich glaub, ich mach die 1.0 vielleicht doch lieber selber fertig, sonst schreiben wir das Jahr 4000, und da steht immer noch 0.9. Oder was meint das Team dazu?

      Das Team meint lapidar: es wird gearbeitet!

      Weniger lapidar: CSS "steht" (der alte Part vom abgesprungenen Teammitglied) und muß nur noch eingebunden werden, JavaScript (ebenfalls vom abgesprungenen Teammitglied wurde erst vor 4 Wochen angefangen und schreitet voran).

      Was den Zeitraum angeht, das am bereits veröffentlichten "andockt", da wird ebenfalls dran gearbeitet, dieses kommt allerdings vermutlich etwas später als geplant.

      Zusammengefaßt: der Zeitraum 1. Halbjahr 1998, also, was ursprünglich Themenumfang der 1.0 sein sollte, wird nicht mehr allzulange auf sich warten lassen, dafür kommen die "Updates" etwas später.

      Hut ab für die Teammitglieder, die sich bereit erklärt haben, im Nachhinein die Arbeit nachzuholen, die eigentlich jemand anderes hätte machen sollen, aber dann auf Nimmerwiedersehen verschwunden ist.

      Wir lassen die Auslese nicht im Stich, würden uns jedoch um etwas mehr Verständnis darüber freuen, daß alles nicht so schnell geht, wie wir uns das manchmal selbst vorstellen.

      Im Namen des Teams

      PAF (patrickausfrankfurt)

      1. Hallo Patrick

        danke fuer die Infos!

        Wir lassen die Auslese nicht im Stich, würden uns jedoch um etwas mehr Verständnis darüber freuen, daß alles nicht so schnell geht, wie wir uns das manchmal selbst vorstellen.

        Nicht boese sein deswegen! Aber wenn ich wochenlang nix hoere, keine Mail, keine Info, kommt mir halt der Verdacht, da tut sich nix mehr. Deshalb meine Bitte: wenn es euch zu viel wird mit dem Zeugs, sagt es mir lieber.

        viele Gruesse
          Stefan Muenz

    3. hi!

      wow - das kann man ja ohne Umwege in die Forumsauslese brginen

      Da muss ich es mir nochmal genauer anschauen. Spontan hätte ich mich eigentlich dagegen entschieden. So aufregend, dass ich es aufnehmen würde, ist es auch nicht. Alle beschriebenen Methoden findet man vermutlich in einem guten Perl- bzw. CGI-Buch in weniger als fünf Minuten.

      bye, Frank!

      1. hi!

        wow - das kann man ja ohne Umwege in die Forumsauslese brginen

        Da muss ich es mir nochmal genauer anschauen. Spontan hätte ich mich eigentlich dagegen entschieden. So aufregend, dass ich es aufnehmen würde, ist es auch nicht. Alle beschriebenen Methoden findet man vermutlich in einem guten Perl- bzw. CGI-Buch in weniger als fünf Minuten.

        bye, Frank!

        hi,

        Frank du wirsts kaum glauben: ich hab noch nie ein gutes Perl- bzw. CGI-Buch gelesen. Und wenn, dann wäre mein Beitrag für dieses Forum immer noch LEGITIM weil Recherchen dahinterstecken, die auf meinem MIST gewachsen sind.

        Konstruktiv dagegen sind zum Beispiel Cheatahs Kommentare: die bringen (nicht nur für mich) neue Erkenntnisse.

        Grüße an alle die anderen gerne helfen, Rolf

      2. Moin Frank,

        wow - das kann man ja ohne Umwege in die Forumsauslese brginen

        Da muss ich es mir nochmal genauer anschauen. Spontan hätte ich mich eigentlich dagegen entschieden. So aufregend, dass ich es aufnehmen würde, ist es auch nicht. Alle beschriebenen Methoden findet man vermutlich in einem guten Perl- bzw. CGI-Buch in weniger als fünf Minuten.

        ich finde, gerade so etwas sollte in die Forums-Auslese, damit sich nicht jeder ein "gutes Perl- oder CGI-" oder sonstwas Buch kaufen muß!

        Gruß
        Dirk

        1. ich finde, gerade so etwas sollte in die Forums-Auslese, damit sich nicht jeder ein "gutes Perl- oder CGI-" oder sonstwas Buch kaufen muß!

          Gruß
          Dirk

          Hallo Dirk,

          Du sprichst mir aus der Seele: GenauSoIsses !!!

          Das Forum wäre öd, wenn hier nur Verweise auf Bücher stehen würden.

          Herzliche Grüße, Rolf

      3. Da muss ich es mir nochmal genauer anschauen. Spontan hätte ich mich eigentlich dagegen entschieden. So aufregend, dass ich es aufnehmen würde, ist es auch nicht. Alle beschriebenen Methoden findet man vermutlich in einem guten Perl- bzw. CGI-Buch in weniger als fünf Minuten.

        Sollte die Forums-Auslese eigentlich nicht den Zweck erfuellen, Informationen komprimiert an einer Stelle anzubieten?
        Denk mal auch an die Leute, die keinen Zugriff auf Uni- oder Schulbibliotheken haben und vielleicht nicht ueber die Mittel verfuegen, sich die teilweise doch recht teuren Buecher zuzulegen.

        Gruesse
        Wilhelm

  2. Hallo Rolf,

    1. Holen einer Seite mit dem LWP-Modul
      Beispiel:
      use LWP::Simple;  
      $doc = get 'http://homepage'; #was heisst hier hacken?
      print "content-type:text/html\n\n";#header erforderlich!
      print $doc;

    diese möglichkeit ist zweifelsohne ein fressen für alle hacker...
    Interessant in diesem zusammenhang wäre, ob nicht nur konkrete dateien durch get geholt werden können, sondern auch verzeichnisse ausgelesen werden können (a'la opendir).
    Weisst du bzw. wisst ihr diesbezüglich was?

    lg,
    robert

    1. Hallo Rolf,

      1. Holen einer Seite mit dem LWP-Modul
        Beispiel:
        use LWP::Simple;  
        $doc = get 'http://homepage'; #was heisst hier hacken?
        print "content-type:text/html\n\n";#header erforderlich!
        print $doc;

      diese möglichkeit ist zweifelsohne ein fressen für alle hacker...
      Interessant in diesem zusammenhang wäre, ob nicht nur konkrete dateien durch get geholt werden können, sondern auch verzeichnisse ausgelesen werden können (a'la opendir).
      Weisst du bzw. wisst ihr diesbezüglich was?

      lg,
      robert

      Hallo Robert,

      ja was heisst hacken ;-)

      Jeder Browser macht ja dasselbe: die Datei downloaden.

      Was man mit dem LWP-Modul noch so alles machen kann.... so tief bin ich da noch nicht rein.

      Jedoch: Mit Perl (und das muss nicht unbedingt ein CGI-Script sein, ein Perl-Script kann auch auf der Befehlszeile aufgerufen werden) kannst Du komplette Seiten samt Links downloaden, schau mal hier:

      <../../sfarchiv/1999_1/t02414.htm#a11273>

      Mit diesem (mich sehr!) beeindruckenden von Frank Schönmann geschriebenem Perl-Script kannst Du das Self_Forum komplett downloaden und offline lesen.

      Musst Dich halt nur mal ein bisschen mit PERL befassen, es gibt da auch eine sehr umfangreiche OnlineDok im Netz:

      http://www.activestate.com/activeperl/docs/ (ups, geht grad nicht, probiers später)

      Viele Grüße, Rolf