User-Online-Anzeige: Geht das so?

SilentWarrior

Erfahrenes Mitglied
Moin Leuts

Hab mir mal in stundenlanger Schweissarbeit *gg* nen eigenen User-Online-Anzeiger gebastelt. Jetzt wollte ich einfach mal fragen, ob der funzt. Wäre sehr dankbar wenn ihr mir mitteilen würdet was noch verbessert werden kann bzw. was sicher nicht funzt. musste es leider mit ner text-datei machen, daher recht umständlicher code:
PHP:
<?php
// überprüfen, ob IP-Adresse bereits in online.txt vorhanden ist
$datei = fopen("online.txt","r+");
$erhoehen = "true";
$zeitlimit = time() - 120;
while(!feof($datei))
 {
  // String mit allen IPs und Timestamps erzeugen
  $alle_benutzer_online .= fgets($datei);
 }
if(!eregi("||",$alle_benutzer_online) and $alle_benutzer_online!="")
 {
  // nur ein Eintrag vorhanden
  $array_eine_ip_und_ein_timestamp = explode("|",$alle_benutzer_online);
  if($array_eine_ip_und_ein_timestamp[0]==$REMOTE_ADDR && $array_eine_ip_und_ein_timestamp[1]<$zeitlimit)
    $erhoehen = "false"; // IP-Adressen identisch, Dauer länger als 2 Minuten
 }
elseif(eregi("||",$alle_benutzer_online))
 {
  // mehrere Einträge vorhanden
  // gesamte Datei in IP-Timestamp-Pakete splitten
  $array_einzelne_user = explode("||",$alle_benutzer_online);
  // einzelne Pakete splitten
  for($i=0;$i<sizeof($array_einzelne_user;$i++)
   {
    $array_eine_ip_und_ein_timestamp = explode("|",$array_einzelne_user[$i]);
    if($array_eine_ip_und_ein_timestamp[0]==$REMOTE_ADDR && $array_eine_ip_und_ein_timestamp[1]<$zeitlimit)
      $erhoehen = "false"; // IP-Adresse gefunden, Dauer länger als 2 Minuten
   }
 }
if($erhoehen=="true")
 {
  if($alle_benutzer_online=="")
    $alle_benutzer_online = $REMOTE_ADDR . "|" . time(); // Datei leer: Eintrag ohne "||"
  else
    $alle_benutzer_online .= "\n||" . $REMOTE_ADDR . "|" . $time(); // Eintrag mit "||" und Zeilenumbruch
 }
rewind($datei);
fwrite($datei,$alle_benutzer_online);
while(!feof($datei))
 {
  // String mit allen IPs und Timestamps erzeugen
  $alle_benutzer_online .= fgets($datei);
 }
$alle_die_online_sind = $substr_count($alle_benutzer_online,"||");
$alle_die_online_sind++;
echo $alle_die_online_sind;
fclose($datei);
thx schonmal

grüsse

silent
 
Hassu keinen Space ums zu testen? :D
However,wenn ich das Script ausführe krieg ich nur diese NMeldung am laufenden Band...
Warning: Wrong parameter count for fgets() in f:\foxserv\www\on.php on line 9
 
ich hab schon space, aber ich bin alleine. ;) und da kann ich ja net abchecken, ob das teil das richtig anzeigt. im übrigen: frage mich, warum die fehlermeldung erscheint: bei php.net steht bei fehlendem zweitem parameter von fgets liest php bis version 4.3 einfach bis zu zeichen 1024, ab 4.3 bis zum zeilenende - müsste ich da evtl. doch noch was angeben?

achja, dann hab ich noch was gemerkt (damit das jetzt nicht noch als verbesserungsvorschlag kommt): das script löscht überhaupt nichts. wenn am tag 1 hundert user online sind, am tag 2 auch, dann zeigt das teil 200 an...werd das mal ausbessern.
 

Neue Beiträge

Zurück