Andreas Flückiger: 2 Probleme mit HTML-Seitenerstellung

Hallo,
ich möchte mit Perl automatisch HTML-Seiten erstellen, die eine andere Seite in einem 100%,* Frame anzeigt. Dabei habe ich 2 Probleme:

1. Wie kann ich unter dem CGI-Verzeichnis ein neues Verzeichnis erstellen?

2. Wie kann ich verhindern, daß bei der Zieladresse HTML-Code eingegeben wird? Unter UNIX ist so ziemlich jedes Zeichen erlaubt für Dateien und Verzeichnisse und ich kann nicht einfach nach bestimmten Zeichen in der URL suchen. Auch zu überprüfen ob die URL existiert würde nicht viel nützen, denn da kann ja jemand z.B. http://www.teamone.de/selaktuell/">IrgendWelcherCode eingeben, und diese Seite würde ja existieren, zumindest für Perl.
Also, kennt jemand Lösungen für diese beiden Probleme?
Vielen Dank im Voraus.

Gruß
Andreas

  1. Hi Andreas,

    Hallo,
    ich möchte mit Perl automatisch HTML-Seiten erstellen, die eine andere Seite in einem 100%,* Frame anzeigt. Dabei habe ich 2 Probleme:

    1. Wie kann ich unter dem CGI-Verzeichnis ein neues Verzeichnis erstellen?

    Ich vermute jetzt einfach mal, daß Du in dieses Verzeichnis HTML-Dateien ablegen möchtest. In der Regel wird dieses nicht von (vernünftigen) Servern unterstützt. Hat man dem Server beigebracht, daß z.B. das Verzeichnis /cgi-bin/ Scripte enthält, so wird alles was dort enthalten ist als Programm interpretiert.
    Sollte dein Script (/cgi-bin/frame) also ein Frameset erzeugen, welches dann die Seite inhalt/index.html referenziert, wird das nicht so ganz funktionieren. Die index.html muß in einem Bereich liegen, welcher html-Dokumente enthält (htdocs). Damit der Zugriff aus dem Frameset heraus auch funktioniert, muß dann der Pfad entweder absolut angegeben sein, oder Du gibst eine BASE Tag mit aus, auf das sich dann (statt /cgi-bin/) die relative Pfadangabe bezieht.

    1. Wie kann ich verhindern, daß bei der Zieladresse HTML-Code eingegeben wird? Unter UNIX ist so ziemlich jedes Zeichen erlaubt für Dateien und Verzeichnisse und ich kann nicht einfach nach bestimmten Zeichen in der URL suchen. Auch zu überprüfen ob die URL existiert würde nicht viel nützen, denn da kann ja jemand z.B. http://www.teamone.de/selaktuell/">IrgendWelcherCode eingeben, und diese Seite würde ja existieren, zumindest für Perl.

    Wenn Du zur Zeit mit dem Gedanken spielst, den Frameset Inhalt durch einen CGI-Parameter zu übergeben, ist bestimmt "path-info" für Dich DIE Variante. Mal angenommen, Dein Script heiß frame (mal ganz bewußt ohne Endung - geht aber natürlich auch mit). Wenn Du dann aus dem Browser /cgi-bin/frame/inhalt/index.html sehen möchtest, wird auf dem Server frame gestartet. Das Script kann die Umgebungsvariable PATH_INFO abfragen, welche in diesem Falle /inhalt/index.html beinhaltet. Das Script könnte nun als Antwort das Frameset ausgeben:

    <html>
    ...
        <frame src="/mywebspace/framepages/inhalt/index.html">
    ...
    </html>

    Viel Spaß erstmal damit,
       Jörk

    1. Hallo Jörk

      Ich vermute jetzt einfach mal, daß Du in dieses Verzeichnis HTML-Dateien ablegen möchtest.

      ja

      Sollte dein Script (/cgi-bin/frame) also ein Frameset erzeugen, welches dann die Seite inhalt/index.html referenziert, wird das nicht so ganz funktionieren.

      Ich möchte nicht im CGI-Verzeichnis ein neues Verzeichnis erstellen, sondern *unter* cgi-bin, also im Hauptverzeichnis. Ich habe dazu keinen Befehl gefunden.

      Wenn Du zur Zeit mit dem Gedanken spielst, den Frameset Inhalt durch einen CGI-Parameter zu übergeben, ist bestimmt "path-info" für Dich DIE Variante.

      Danke, kann ich gut gebrauchen. Ich habe zwar festgestellt, dass man die Zeichen einfach maskieren kann und die URL trotzdem gefunden wird, aber das mit dem "path-info" ist eine gute Idee. Könnte man damit nicht auch für jedes Verzeichnis ein CGI-Script erstellen, dass dann eine bestimmte Seite spiegelt? Wie muss ich dann die automatisch erstellten CGI-Scripts ausführbar machen?

      Viele Grüße
      Andreas

      1. Hi!

        Sollte dein Script (/cgi-bin/frame) also ein Frameset erzeugen, welches dann die Seite inhalt/index.html referenziert, wird das nicht so ganz funktionieren.
        Ich möchte nicht im CGI-Verzeichnis ein neues Verzeichnis erstellen, sondern *unter* cgi-bin, also im Hauptverzeichnis. Ich habe dazu keinen Befehl gefunden.

        Den Unterschied verstehe ich nicht so ganz :(

        Wenn Du zur Zeit mit dem Gedanken spielst, den Frameset Inhalt durch einen CGI-Parameter zu übergeben, ist bestimmt "path-info" für Dich DIE Variante.

        Danke, kann ich gut gebrauchen. Ich habe zwar festgestellt, dass man die Zeichen einfach maskieren kann und die URL trotzdem gefunden wird, aber das mit dem "path-info" ist eine gute Idee. Könnte man damit nicht auch für jedes Verzeichnis ein CGI-Script erstellen, dass dann eine bestimmte Seite spiegelt? Wie muss ich dann die automatisch erstellten CGI-Scripts ausführbar machen?

        Wieso möchtest Du dazu scripte erstellen lassen? Ich habe mal ein Script geschrieben, welches mir eine ganze Web-Site spiegelt, da der Rechner, auf dem das Script lief, der einzige war, der durch die Firewall zu besagter Site durfte:
        www.meinserver.de/cgi-bin/mirror/ brachte dann auch die Einstiegsseite. Folgelinks konnten dann auch über das Script eingelesen werden (www.meinserver.de/cgi-bin/mirror/bilder/ich.jpg).
        Es war hier also nicht nötig, für jedes Unterverzeichnis ein neues Script zu generieren ...

        Gruß,
            Jörk

        1. Hallo Jörk

          Ich möchte nicht im CGI-Verzeichnis ein neues Verzeichnis erstellen, sondern *unter* cgi-bin, also im Hauptverzeichnis. Ich habe dazu keinen Befehl gefunden.

          Den Unterschied verstehe ich nicht so ganz :(

          Also, ich habe z.B. die Adresse http://www.domain.de, dann möchte ich z.B. das Verzeichnis http://www.domain.de/verzeichnis erstellen und nicht http://www.domain.de/cgi-bin/verzeichnis.

          Wieso möchtest Du dazu scripte erstellen lassen?

          Ich biete kurz-URL's an, also z.B. http://www.domain.de/Name, ich wollte das eben mit einem Frame machen, wenn aber http://www.domain.de/Name eine Seite spiegeln würde, wäre daß doch viel besser, oder?

          Gruß
          Andreas

          1. Hi!

            Also, ich habe z.B. die Adresse http://www.domain.de, dann möchte ich z.B. das Verzeichnis http://www.domain.de/verzeichnis erstellen und nicht http://www.domain.de/cgi-bin/verzeichnis.

            Wieso möchtest Du dazu scripte erstellen lassen?
            Ich biete kurz-URL's an, also z.B. http://www.domain.de/Name, ich wollte das eben mit einem Frame machen, wenn aber http://www.domain.de/Name eine Seite spiegeln würde, wäre daß doch viel besser, oder?

            Dann müßte Name wohl ein Script sein, welches dann aber im obersten (HTML-)Verzeichnis liegt. Der Server wiederum müßte dann so konfiguriert werden, daß auch Scripte in Dokument-Verzeichnissen liegen dürfen. Wenn ich mich recht entsinne werden die dann über das x-Bit differenziert ...
            Dann würden auch Name1, Name2 ... jeweils eigene Scripte sein.

            Jörk