totaler PHP-Anfänger: totalerr PHP-Anfänger in Schwerigkeiten. Browser ermitteln

Guten Tag,

ich fange gerade an mich mit PHP zu beschäftigen und habe eine kleines Script geschrieben, welches den Browser (Name und Version) des Surfers auslesen soll und ihn dann die Daten in eine Textdatei schreiben soll. Dieses Script bedindet sich auf einer ganz normalen Webseite, die ausser diesem Script nur HTML und CSS enthält. Die betreffende Seite habe ich die Endung .php gegeben. Nun bekomme ich aber eine Fehlermeldung wenn ich die Seite im Internet aufrufe, die das Script enthält.

Fehlermeldung:
Parse error: parse error in /home/.../public_html/seite.php on line ...

Hier nun das Script dazu:

<?
 datei= "browser.txt"; //browser.txt in der die Daten geschrieben werden sollen und auch die Zeile wo der Fehler ist.
 $fp= fopen ($datei, "w");
 fwrite ($fp, "$HTTP_USER_AGENT");
 fclose ($fp);
?>

Könnt ihr mir bitte helfen und posten, wo der Fehler liegt?
1000Dank

  1. Salut

    <?

    Hier fehlt das $ vor datei

    datei= "browser.txt"; //browser.txt in der die Daten geschrieben werden sollen und auch die Zeile wo der Fehler ist.
    $fp= fopen ($datei, "w");
    fwrite ($fp, "$HTTP_USER_AGENT");
    fclose ($fp);
    ?>

    Salut,
    Christoph

  2. Hallo,

    <?
    datei= "browser.txt"; //browser.txt in der die Daten geschrieben werden sollen und auch die Zeile wo der Fehler ist.

    $datei (wurde schon angemerkt)

    fwrite ($fp, "$HTTP_USER_AGENT");

    Hier schreibst Du stets den Text $HTTP_USER_AGENT und nicht den Variableninhalt:

    fwrite ($fp, $HTTP_USER_AGENT);

    Falls die Ausgabe angehaengt werden soll, oeffne die Datei mit "a" (append).

    MfG, Thomas

    1. fwrite ($fp, "$HTTP_USER_AGENT");

      Hier schreibst Du stets den Text $HTTP_USER_AGENT und nicht den Variableninhalt:

      Nein, PHP ersetzt auch in Zeichenketten Variablennamen, die obige Zeile funktioniert also durchaus wie gewünscht. Das ändert allerdings nichts daran, daß es vielleicht nicht ganz unklug ist, Variablen trotzdem nicht in die Zeichenkette zu schreiben, sondern immer mit . aneinander zu reihen.

      fwrite ($fp, $HTTP_USER_AGENT);

      Falls die Ausgabe angehaengt werden soll, oeffne die Datei mit "a" (append).

      Falls die Datei automatisch erzeugt werden soll, falls sie noch nicht existiert, hänge noch ein + an: "a+" (siehe http://www.php.net/manual/de/function.fopen.php).

      Weiterhin fehlt in dem Code eine Fehlerabfrage sowie in der fwrite()-Zeile ein \n am Ende, damit die Einträge jeweils in der nächsten Zeile beginnen.

      $fp=fopen($datei,"a+");
        if (! $fp)
          {
           die("Fehler beim Öffnen der Datei");
          }
         else
          {
           fwrite($fp,$HTTP_USER_AGENT."\n"); // PHP >= 4.1: $_SERVER["HTTP_USER_AGENT"]
           fclose($fp);
          };

      Gruß,
        soenk.e

      1. Falls die Ausgabe angehaengt werden soll, oeffne die Datei mit "a" (append).

        Falls die Datei automatisch erzeugt werden soll, falls sie noch nicht existiert, hänge noch ein + an: "a+" (siehe http://www.php.net/manual/de/function.fopen.php).

        Korrektur: fopen() in einer Sprache scheint leider nicht gleich fopen() in einer anderen zu sein. Eine Datei wird in PHP automatisch erzeugt, mit oder ohne Plus. Die PHP-Variante für's Plus erscheint mir etwas verwirrend, aber egal :)

        Gruß,
          soenk.e

      2. Hallo,

        Nein, PHP ersetzt auch in Zeichenketten Variablennamen, die obige Zeile funktioniert also durchaus wie gewünscht. Das ändert allerdings nichts daran, daß es vielleicht nicht ganz unklug ist, Variablen trotzdem nicht in die Zeichenkette zu schreiben, sondern immer mit . aneinander zu reihen.

        Stimmt. Ich war gerade gedanklich bei JavaScript. Die Ersetzung erfolgt aber nur in doppelten Anfuehrungszeichen. Bei '$HTTP_USER_AGENT' staende der Inhalt pur da.

        MfG, Thomas