Ron: Kann man mit Perl den Dateinamen/die URL der ausgegebenen Seite bestimmen ?

Hallo Alle!

Ich habe eine Frage, vielleicht kann mir hier ja jemand helfen. Würde mich freuen. :)

Ich habe ein Perlskript geschrieben, das ein Formular auswertet und als Ergebnis eine Seite ausgibt, die der User dann abspeichern soll. Nun ist es ja so, daß in der URL dann der Dateiname des Skriptes steht. Der Besucher muß dann beim Speichern der Seite die Dateiendung ebenfalls ändern, sonst wird das beim späteren Aufrufen ja nix.

Deshalb hatte ich mir gedacht, daß es doch schön wäre, wenn man im Skript die URL, die dann oben im Browser steht, bestimmen kann, so daß dann auch beim Abspeichern schon eine HTML-Datei angegeben wird. Ist das möglich? Und wenn ja, wie?

Vielleicht kann mir ja jemand helfen. Vielen Dank.

  1. Hallo,

    vielleicht besser so:

    • auf Server als *.html speichern
    • zippen
    • Seite mit Link zur *.zip zeigen

    Reiner

    1. vielleicht besser so:

      • auf Server als *.html speichern
      • zippen
      • Seite mit Link zur *.zip zeigen

      Verstehe ich das richtig? Die Seite mit dem Skript generieren, speichern und ne Seite mit nem Link ausgeben? Hm, auch ne Idee, danke. :)

      1. Verstehe ich das richtig? Die Seite mit dem Skript generieren, speichern und ne Seite mit nem Link ausgeben? Hm, auch ne Idee, danke. :)

        Ja, aber dann mußt Du die Datei irgendwann mal wieder löschen. Du weißt ja nicht, wann der Besucher die Datei speichert. Also würde ich von dieser Möglichkeit absehen.

      2. Hi!

        Verstehe ich das richtig? Die Seite mit dem Skript generieren, speichern und ne Seite mit nem Link ausgeben? Hm, auch ne Idee, danke. :)

        Keine gute Idee. Was machst Du, wenn zwei Besucher gleichzeitig eine Anfrage an das Script machen?

        Calocybe

        1. Hi!

          Verstehe ich das richtig? Die Seite mit dem Skript generieren, speichern und ne Seite mit nem Link ausgeben? Hm, auch ne Idee, danke. :)

          Keine gute Idee. Was machst Du, wenn zwei Besucher gleichzeitig eine Anfrage an das Script machen?

          Calocybe

          Ja, so genau war es auch nicht gemeint! Man muß natürlich solche Dinge ausschließen. Ich weiß nicht, was da genau verlangt ist, aber wenn das nur einmal passieren soll, ist das eine gute Möglichkeit. Ansonsten gibt man der Datei einen temp. Namen und löscht die Datei irgendwann....

          Reiner

  2. Hi,

    Ich habe eine Frage, vielleicht kann mir hier ja jemand helfen. Würde mich freuen. :)

    Ich habe ein Perlskript geschrieben, das ein Formular auswertet und als Ergebnis eine Seite ausgibt, die der User dann abspeichern soll. Nun ist es ja so, daß in der URL dann der Dateiname des Skriptes steht. Der Besucher muß dann beim Speichern der Seite die Dateiendung ebenfalls ändern, sonst wird das beim späteren Aufrufen ja nix.

    Deshalb hatte ich mir gedacht, daß es doch schön wäre, wenn man im Skript die URL, die dann oben im Browser steht, bestimmen kann, so daß dann auch beim Abspeichern schon eine HTML-Datei angegeben wird. Ist das möglich? Und wenn ja, wie?

    Die aktuelle URL eines CGI-Skriptes kriegst du z.B. so:

    $THIS_URL = "http://".$ENV{'SERVER_NAME'}.$ENV{'SCRIPT_NAME'};

    Es geht zwar auch mit SCRIPT_URI, aber auf einigen Webserver gibt es den nicht :(

    Dein problem liesse sich auch anders lösen:

    Kurz gesagt: Tricks den Webserver/Browser aus :)
    Geb als Content-type nicht irgentwas bekanntes, was der Browser ausführen kann, wie text/html, application/zip, etc...,sondern etwas unbekanntes, was aber auch der Webser nicht kennt (also was nicht in mime.conf bei Apache installiert ist).
    Z.B.:  "Content-type: application/dowload\n\n"

    Da der Webserver damit nichts anfangen kann, und der Browser auch nichts, hält der Browser es für eine Applikation und gibt dir das Fenster zum Starten, Speichern oder Abbrechen.

    Um zusätzlich noch den Dateinamen anzugeben, mußt du bei den Header noch "Content-Disposition: filename=blafasel\n" angeben.

    Ciao,
      Wolfgang

  3. Hallo Ron,

    vielleicht gehts auch mit SSI? Angefordert würde eine html-Seite und diese mitten in der Abarbeitung mit den aktuellen Daten gefüttert.
    Oder fülle einen Layer in einer HTML-Seite mit den benötigten Inhalten. In jedem Fall würde als Name in der Adresszeile eine .html stehen.

    Chiau Pit

  4. Deshalb hatte ich mir gedacht, daß es doch schön wäre, wenn man im Skript die URL, die dann oben im Browser steht, bestimmen kann, so daß dann auch beim Abspeichern schon eine HTML-Datei angegeben wird. Ist das möglich? Und wenn ja, wie?

    Nein, das Perl-Skript kann den Namen der URL, über die es angesprochen *wurde*, nicht beeinflussen. (Eventuell kann man über HTTP-Header etwas fummeln, das war erst neulich Thema hier im Forum.)

    Aber derjenige, der das Perl-Skript *installiert* hat, kann es.
    Insbesondere ist es durchaus machbar, in einem CGI-Verzeichnis ein Skript namens "irgendwas.html" zu installieren! Dann haben beide Seiten, was sie wollen:
    a) Der Server erkennt am Pfadnamen, daß er den Inhall der Datei nicht übertragen, sondern ausführen lassen soll.
    b) Der Client erkennt am Dateinamen, daß er das HTML-Dokument mit der "korrekten" Endung abspeichern soll.

    Ganz nebenbei verbirgt eine solche Installation vollständig vor dem Besucher, daß das ihm angezeigte Dokument dynamisch generiert wurde. (Ähnlich, wie es via SSI verborgen wird.)

    1. Vielen Dank, wenn das mit der Endung .htm im CGI-Verzeichnis klappt, wär das ja einfach genial. Werde ich gleich mal testen. :)