silentplanet: Referer mit safe mode auslesen

Hallo,

da man im safe mode ja fopen() nicht nutzen kann, kam mir die Idee, den Referer und die zugehörige IP-Adresse nicht in ein Textdokument zu schreiben, sondern einfach in einer separaten Webseite (zB referer.php) auszugeben.

Ist dies möglich? Wenn ja, wie kann man das realisieren? Und was gäbe es noch für Alternativen?

Danke im Voraus :-)

  1. Moin!

    da man im safe mode ja fopen() nicht nutzen kann,

    Woher nimmst du das denn? In der offiziellen PHP-Dokumenten der Funktion fopen steht lediglich:

    Wenn Sie Safe Mode oder open_basedir aktiviert haben, können weitere Einschränkungen zutreffen.

    Jetzt ist die Frage, was du in deinem PHP-Skript machst, dass du zu dem Schluss kommst, im Safe Mode könne man fopen nicht nutzen.

    kam mir die Idee, den Referer und die zugehörige IP-Adresse nicht in ein Textdokument zu schreiben, sondern einfach in einer separaten Webseite (zB referer.php) auszugeben.

    Was stellst du dir darunter vor?

    Ist dies möglich? Wenn ja, wie kann man das realisieren?

    Dein Vorschlag sähe für mich so aus, scheint allerdings dem gewünschten Ergebnis definitiv nicht zu entsprechen:

    if (array_key_exists('HTTP_REFERER', $_SERVER)  
        echo $_SERVER['HTTP_REFERER'];
    

    Und was gäbe es noch für Alternativen?

    Was hast du denn mit dem Referrer vor? Wenn du es nicht hinbekommst, eine Datei zu beschreiben, könntest du z.B. eine Datenbank damit füttern.

    Viele Grüße,
    Robert

    1. Hallo Robert (und die anderen die das lesen),

      nehmen wir einmal an, fopen() würde funktionieren und ich will den Referer auf einer Startseite einer Homepage auslesen. Ich würde dann wohl ein Skript nehmen wie

      <?
      $url = $HTTP_REFERER;
      $fp = fopen("daten/referer.log","a");
      fputs($fp," $url n");
      fclose($fp);
      ?>

      die Daten des Referers, also $url werden in referer.log reingeschrieben und können bei Betrachtung dieser Datei wahrgenommen werden. Nun will ich aber das, was in referer.log stehen würde, _nicht_ in dieser Datei, sondern in eine Webseite parsen, sodass ich am Ende zum Beispiel http://url.de/stats/referer.php aufrufen könnte und dann die Daten in dieser Datei sehe.

      Würde sowas im safe mode funktionieren? Mit fopen() klappts jedenfalls nicht, php gibt folgende Fehlermeldung zurück:

      Warning: fopen() [function.fopen]: SAFE MODE Restriction in effect. The script whose uid is 6486 is not allowed to access /url owned by uid 33 in /url/index.php on line 153

      Warning: fopen(daten/referer.log) [function.fopen]: failed to open stream: No such file or directory in /url/index.php on line 153

      Danach gehts dann genauso mit fputs() weiter, was ich auch als Problem sehe.

      1. Hallo,

          
        if(array_key_exists('HTTP_REFERER',$_SERVER){  
           $fp = fopen("daten/referer.log","a");  
           fputs($fp,$_SERVER['HTTP_REFERER']."\n");  
           fclose($fp);  
        }  
        
        

        Würde sowas im safe mode funktionieren? Mit fopen() klappts jedenfalls nicht, php gibt folgende Fehlermeldung zurück:

        Warning: fopen() [function.fopen]: SAFE MODE Restriction in effect. The script whose uid is 6486 is not allowed to access /url owned by uid 33 in /url/index.php on line 153

        das Verzeichnis ./url gehört nicht Dir (6486). Lege also per FTP ersteinmal ein Verzeichnis ./url/data an und prüfe mit fileowner("./url/data"), ob dort 6486 oder 33 ausgegeben wird. Wird 33 als UID ausgegeben, solltest Du Dich mit Deinem Provider/dessen FAQ auseinandersetzen. Wird 6486 ausgegeben, dann kannst Du Dein Script erstellen.

        Gruß aus Berlin!
        eddi

        --
        Wer Rechtschreibfehler findet, darf sie behalten.