User Online Script - Fehlermeldung

Anacondi

Erfahrenes Mitglied
Hi.
Ich habe aus den Tutorials das folgende Script kopiert und durchlaufen lassen.
Leider erhalte ich immer wieder den folgenden Fehler und finde nicht, warum:

Undefined variable: REMOTE_ADDR in C:\xampp\htdocs\Bgame\user_online.php on line 30

Script:
PHP:
<? 
// die Datei, in die geschrieben werden soll 
$datei = "useronline.dat"; 
// erstelle Datei, falls sie nicht existiert 
if (!file_exists($datei)) fclose(fopen($datei, "w")); 
// Einlesen der Datei in ein Array (eine Zeile pro Arrayfeld) 
$users = file($datei); 

$gefunden = false; 
// Anzahl der Einträge ermitteln 
$anzahl_users = count($users); 

// Datei zum Schreiben öffnen 
$fp = fopen($datei, "w"); 

// Durchlaufen der Einträge 
foreach($users as $user) 
{ 
    // in ein Array aufsplitten 
    $user = explode("|", $user); 
    // wenn der Eintrag älter als 5 Minuten (=300 Sekunden) ist... 
    if ($user[1]+300 < time()) 
    { 
        // Anzahl der User um 1 verringern 
        $anzahl_users--; 
        // nächsten Schleifendurchlauf starten 
        continue; 
    } 
    // wenn der User schon eingetragen ist, dann... 
    elseif ($user[0] == $REMOTE_ADDR) 
    { 
        // ...aktuelle Zeit setzen 
        $user[1] = time(); 
        // ...bestätigen, dass kein neuer Eintrag erforderlich ist 
        $gefunden = true; 
    } 
    // wieder in Zeichenkette umwandeln und Zeilenumbruch anfügen 
    $user = trim(implode("|", $user))."\n"; 

    // in Datei schreiben 
    fputs($fp, $user); 
} 

// wenn der User noch nicht eingetragen ist... 
if (!$gefunden) 
{ 
    // neuen Eintrag direkt in die Datei schreiben 
    fputs($fp, $REMOTE_ADDR."|".time()."\n"); 
    // Anzahl der User um 1 erhöhen 
    $anzahl_users++; 
} 

// Datei schließen 
fclose($fp); 

// Ausgabe 
echo $anzahl_users." User(s) online."; 
?>
 
ersete $REMOTE_ADDR durch $_SERVER['REMOTE_ADDR'].
Je nach dem wie alt das Script war, setzt es vermutlich noch auf register_globals=on (nicht zu empfehlen). Mit der oben genannten Änderung ist der Fehler behoben.
 
Moin,
die Fehlermeldung teilt dir eigentlich schon genau mit, was hier nicht stimmt.
Die Variable $REMOTE_ADDR wurde nirgends deklariert bzw. initialisiert.

Ohne mich jetzt näher mit dem Skript befasst zu haben, würde ich mal meinen, dass die Variable die IP-Adresse des derzeitigen Nutzers enthalten soll, die nun mit denen in der Datei abgeglichen werden sollen.....

Aus diesem Grunde könnte man die Variable auch selber zu Beginn des Skriptes definieren:

PHP:
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
// restliches Skript

Ist nicht getestet - hoffe es funktioniert trotzdem ;)

Edit:
Ich sollte mich demnächst kürzer fassen mit dem Schreiben......hier ist man ja immer Bummelletzter ^^
 
Zurück