Andre Steffens: Datei mit CGI zum Bearbeiten öffnen

Hi,

kleines CGI-Problem. Ich möchte die Datei bearbeiten, welche das CGI-Skript aufgerufen hat. Über den HTTP_REFERER habe ich die Datei bereits eindeutig identifiziert, nur öffnen kann ich sie leider nicht. Die Datei befindet sich auf dem gleichen Server, nur in einem anderen Verzeichnis.

Ideen ???

Gruß und Danke !!!

Andre

  1. Hallo Andre,

    Über den HTTP_REFERER habe ich die Datei bereits eindeutig identifiziert, nur öffnen kann ich sie leider nicht. Die Datei befindet sich auf dem gleichen Server, nur in einem anderen Verzeichnis.

    HTTP_REFERER liefert eine URL. Zum Oeffnen von Dateien brauchst Du jedoch den Verzeichnispfad der Datei im Sinne des Betriebssystems. Da es sich bei Dir um den eigenen Server handelt, solltest Du den Pfad aber eigentlich kennen bzw. wissen, wie eine URL (Beispiel: http://www.xy.de/mydir/datei.htm) in eine Pfadadressierung laut Betriebssystem zu uebersetzen ist (Beispiel: /usr/local/web/home/mydir/datei.htm). Letzteres kannst Du dann mit open() oeffnen, einlesen und bearbeiten.

    viele Gruesse
      Stefan Muenz

    1. Hi,

      HTTP_REFERER liefert eine URL. Zum Oeffnen von Dateien brauchst Du jedoch den Verzeichnispfad der Datei im Sinne des Betriebssystems. Da es sich bei Dir um den eigenen Server handelt, solltest Du den Pfad aber eigentlich kennen bzw. wissen, wie eine URL (Beispiel: http://www.xy.de/mydir/datei.htm) in eine Pfadadressierung laut Betriebssystem zu uebersetzen ist (Beispiel: /usr/local/web/home/mydir/datei.htm). Letzteres kannst Du dann mit open() oeffnen, einlesen und bearbeiten.

      Ich habe den von HTTP_REFERER übergebenen Wert bereits entsprechend zerlegt. Nun bleibt der Wert /pfad/datei.htm aber auch die kann ich nicht öffnen.

      Gruß Andre

      1. hi!

        Ich habe den von HTTP_REFERER übergebenen Wert bereits entsprechend zerlegt. Nun
        bleibt der Wert /pfad/datei.htm aber auch die kann ich nicht öffnen.

        Hast du Zugriff auf die error.log? Was steht an der entsprechenden Stelle? Ansonsten könntest du versuchen, eine eigene Datei anzulegen, in die du die Fehlermeldung schreibst (müsste eigentlich im Skalar $! stehen).

        Mir würden nur zwei Möglichkeiten einfallen: 1. du wertest den Pfad irgendwie falsch aus o.ä., 2. du hast kein Zugriffsrecht für die zu lesende Datei.

        Vielleicht kannst du mal den entscheidenden Teil des Skripts posten. Evtl. ist da auch ein Fehler drin.

        bye, Frank!

      2. Hi,

        Ich habe den von HTTP_REFERER übergebenen Wert bereits entsprechend zerlegt. Nun bleibt der Wert /pfad/datei.htm aber auch die kann ich nicht öffnen.

        hast Du dran gedacht, Deinen Userpfad mit anzugeben? Am Ende sollte es etwa "/www/domainname/pfad/datei.htm" heißen.

        Cheatah

        1. Hi,

          Ich habe den von HTTP_REFERER übergebenen Wert bereits entsprechend zerlegt. Nun bleibt der Wert /pfad/datei.htm aber auch die kann ich nicht öffnen.

          hast Du dran gedacht, Deinen Userpfad mit anzugeben? Am Ende sollte es etwa "/www/domainname/pfad/datei.htm" heißen.

          Ich habe das Skript derzeit auf meinem Lokalen-Server laufen (HTTPD).
          Die Datei schimpft sich: http://localhost/terminus/guest.htm wenn ich nun das Teil zerlege bleibt nur noch /terminus/guest.htm übrig sollte also, meines Wissens nach, die richtige Adresse sein. Oder muß ich tatsächlich auf Betriebssystemebene zurück sprich /internet/terminus/datei.htm ???

          Gruß Andre

  2. Hi,

    ok, ich glaube ich habe das Problem erkannt, aber wie kann ich dem CGI-Skript nun den genauen Server-Pfad beibringen, bzw. übergeben??? Wenn nun z.B. mehrere User (Domains) auf dieses Skript zugreifen sollen:

    /www/steffens/...

    usw. in diesem Fall würde mir HTTP_REFERER jeweils nur

    http://www.terminus.de/guest.htm

    liefern, also nicht die genau Bezeichnung (Domainname nicht gleich USER auf dem Server ???)

    Gruß Andre

    1. Hi,

      kannst Du einen Parameter mit übergeben, der den User bezeichnet?

      Cheatah

      1. Hi,

        kannst Du einen Parameter mit übergeben, der den User bezeichnet?

        nein !!!

        Das Skript sollte selbständig den Ort der aufrufenden Datei auf dem Server finden.

        Gruß Andre