Hallo,
ich benutze PHP 4.3.10 und bin bei 1und1 gehostet. Das folgende php-Script soll die Zahl der User die in den letzten 3 Minuten Online waren ermitteln. Dabei werden die IPs und der Zeitpunkt in eine Datenbanktabelle "Online" geschrieben. Das Script meldet keine Fehler, aber wenn man sich den Inhalt der Tabelle anschaut, steht immer nur 1 Eintrag drin und zwar die IP des Servers!!! (habe ich mit phpinfo() ausgelesen). Aber mit $_SERVER['REMOTE_ADDR'] sollte doch die IP des Client!!! ermittelt werden. Habe auch schon $REMOTE_ADDR ohne das Server Array probiert -> gleicher Mist.
Daher meldet das Script auch immer nur: 1 Besucher online!!!
Bin für jede Hilfe dankbar!
ich benutze PHP 4.3.10 und bin bei 1und1 gehostet. Das folgende php-Script soll die Zahl der User die in den letzten 3 Minuten Online waren ermitteln. Dabei werden die IPs und der Zeitpunkt in eine Datenbanktabelle "Online" geschrieben. Das Script meldet keine Fehler, aber wenn man sich den Inhalt der Tabelle anschaut, steht immer nur 1 Eintrag drin und zwar die IP des Servers!!! (habe ich mit phpinfo() ausgelesen). Aber mit $_SERVER['REMOTE_ADDR'] sollte doch die IP des Client!!! ermittelt werden. Habe auch schon $REMOTE_ADDR ohne das Server Array probiert -> gleicher Mist.
Daher meldet das Script auch immer nur: 1 Besucher online!!!
PHP-Code:
<?php
@mysql_connect("db454.1und1.de","...","...") or die("Verbindung gescheitert!");
mysql_select_db("...") or die("Zugriff gescheitert!");
$sql = "SELECT COUNT(*) as Anzahl FROM online WHERE IP = '".$_SERVER['REMOTE_ADDR']."'";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);
if($row['Anzahl']) {
// Nur Datum Updaten
$sql = "UPDATE online SET Datum = NOW() WHERE IP = '".$_SERVER['REMOTE_ADDR']."'";
mysql_query($sql) OR die(mysql_error());
} else {
// Neuer Eintrag
$sql = "INSERT INTO online(IP, Datum) VALUES('".$_SERVER['REMOTE_ADDR']."', NOW())";
mysql_query($sql) OR die(mysql_error());
}
// alte Datensätze löschen
$sql = "DELETE FROM online WHERE DATE_SUB(NOW(), INTERVAL 3 MINUTE) > Datum";
mysql_query($sql) OR die(mysql_error());
// Anzahl Ausgeben
$sql = "SELECT COUNT(*) as Anzahl FROM online";
$result = mysql_query($sql) OR die(mysql_error());
$row = mysql_fetch_assoc($result);
$count=$row['Anzahl'];
echo "$count User online";
mysql_close();
?>
Kommentar