geht dieses USERONLINE script?

A5 Infoschlampe

Erfahrenes Mitglied
hi,
ich habe folgendes script, dass die user zählen soll die aktuell auf der website surfen - aber irgendwie zeigt es immer nur "1" an, und in der textdatei die da erzeugt wird steht auch immer nur die gleiche eine Ip. weiss jemand wieso???

das ergbenis wird der variable $count übergeben.

oder kennt jemand einen usercounter auf sql datenbank basierend???

freudliche grüsse, ciao

---- script ----
<?
//# Zeit in Sekunden bis neu gezählt wird
$online = "120";


//# Die Datei in der die IP und zeit gespeichert werden
$datei = "http://www.discoguide.de/usercounterfile.dat";

$zeit = time();
$fp = fopen($datei, "r");
$daten = "";
$count = "1";
$online = $zeit - $online;

while($zeilen = fgets($fp, 1000)){
$zeilen = chop($zeilen);
$inhalt = explode("|", $zeilen);
if($inhalt[0] == $REMOTE_ADDR || $inhalt[1] < $online || $inhalt[0] == "")
continue;
$daten = "$inhalt[0]|$inhalt[1]\n";
$count++;
}
fclose($fp);

$daten .= "$REMOTE_ADDR|$zeit\n";
$fp = fopen($datei, "w");
flock($fp,1);
fwrite($fp, $daten);
flock($fp,3);
fclose($fp);

?>
--- ende script ---
 
Zuletzt bearbeitet:
ich glaub es liegt hierdran:
$daten = "$inhalt[0]|$inhalt[1]\n";
in das hier ändern:
$daten = $daten."$inhalt[0]|$inhalt[1]\n";

sonst überschreibst du $daten ja immer wieder mit jedem Duchlauf der while schleife.

tob
 
hat sich logisch angehört, aber irgendwie zeigt er dennoch immer nur 1 an (keine angst, sind schon mehr leute drauf :) ).

kennt jemand vielleicht von euch ein script dass icht auf textdateien sondern auf sql basiert???

thx ciao
 
jo, ich :)

PHP:
function user_online() {
  $zeitspanne = 120; // in Sekunden
  $zeit = time();
  $expzeit = $zeit+$zeitspanne;
  mysql_query("DELETE FROM user_online WHERE expire < '$zeit'");

  $ip = getenv("REMOTE_ADDR");

  mysql_query("INSERT INTO user_online (ip,expire) VALUES ('$ip','$expzeit')");

  $result = mysql_query("SELECT DISTINCT ip FROM user_online");
  $user_online = mysql_num_rows($result);
  return $user_online;
}

du musst natürlich noch eine db-verbindung vorher aufbauen und ne db auswählen ;)
'user_online' is der name der tabelle .. um dann die online user auszugeben musst du einfach schreiben
PHP:
echo user_online();

mfg
 
Zuletzt bearbeitet:
Zurück