Michi: Counter für Besucher letzte 24 Stunden

Hallo Forum,

ich möchte mit PHP einen counter programmieren, der die Besucher der letzten 24 Stunden anzeigt. Ich hab jetzt mal alleine rumgewurstelt aber komm jetzt nicht mehr weiter.

Ich hoffe ihr könnt mir helfen.

Meine Idee:
eine Txt-Datei, in die die Timestamp jedes Besuchers untereinander gespeichert wird. Es wird überprüft ob die Timestamp schon älter als 24 Stunden ist. Wenn ja wird sie gelöscht. Danach kann die Anzahl der Zeilen ermittelt werden = Anzahl der Besucher in den letzten 24 Stunden

Ist die Idee ok, oder geht es auch einfacher?
Gibt es fehler im Code?
köönt ihr mir an den stellen weiterhelfen wo ich nicht weitergekommen bin? Also z.B. beim löschen der timstamp-werte im array die älter als 24 stunden sind?

Vielen Dank!

Hier der Quelltext:

$st_24 = "Pfad zur txt-Datei";
$datei_24 = fopen("$st_24","a+");
$neue_zeit = "\n".time();
rewind($datei_24);
fwrite($datei_24, $neue_zeit);
fclose($datei_24);

//Datei Zeilenweise in Array einlesen
$array_24 = file($st_24);

//timestamp vor 24 Stunden berechnen
$zeit_vor_24_st = time() - 86400;

// $array_24 von hinten nach vorne durchlaufen
$i = sizeof($array_24);
while ($i--)
{
    if($array_24[$i]) <= $zeit_vor_24_st)
    (
        arraywert löschen
    )
}

Array zeilenweise zurückspeichern
fertig

  1. Hallo Michi!

    Ist die Idee ok, oder geht es auch einfacher?

    Naja, ich würd sagen die Idee it schon ok.

    arraywert löschen

    Lesetip: http://de.php.net/unset

    Array zeilenweise zurückspeichern

    Also den Array nehmen, mit implode() zusammensetzen, als Trennzeichen vielleich am besten \n angeben, daß jedes Element in ner neuen Zeile im String ist. Das sollte eigentlich funktionieren denk ich.
    Lesetip: http://de.php.net/implode

    btw: Ein wenig im Manual lesen soll noch keinem geschadet haben .. angeblich.

    MfG
    Götz

    --
    Losung für Montag, 8. März 2004
    Der Herr, dein Gott, wandelte dir den Fluch in Segen um, weil dich der Herr, dein Gott, lieb hatte. (5. Mose 23,6)
    Jesus sprach zu der geheilten Frau: Meine Tochter, dein Glaube hat dich gesund gemacht; geh hin in Frieden und sei gesund von deiner Plage! (Markus 5,34)
    (http://www.losungen.de/heute.php3)
    1. Hallo Götz,

      danke für deine Hilfe.

      Ich denke das meiste ist jetzt richtig, es ist nur och irgendwo ein kleiner Fehler versteckt den ich nicht finde.
      Die Fehlermeldung:
      Warning: implode(): Bad arguments. in /web/header.php on line 120
      betrifft folgende zeile im Script:
      $string_24 = implode("\n" , $array_24);

      mfg Michi

      Hier nochmal der komplette quelltext des Scripts:
      function stunden_24_counter()
      {
      $datei_24 = fopen("/web/start/counter/counter_letzte24.txt","a+");
      $neue_zeit = "\n".time();
      rewind($datei_24);
      fwrite($datei_24, $neue_zeit);
      fclose($datei_24);

      //Datei Zeilenweise in Array einlesen
      $array_24 = file($st_24);

      //timestamp vor 24 Stunden berechnen
      $zeit_vor_24_st = time() - 86400;

      // $array_24 von hinten nach vorne durchlaufen
      $groesse_array = sizeof($array_24);
      for ($i = 0; $i == $groesse_array; ++$i)
      {
          if($array_24[$i] <= $zeit_vor_24_st)
          {
       //unset() gibt ein Array-Element vollständig frei
              unset($array_24[$i]);
          }
      }
      //implode() Verbindet Array-Elemente zu einem String
      $string_24 = implode("\n" , $array_24);

      //Datei überschreiben
      $fp_24 = fopen("/web/start/counter/counter_letzte24.txt", "w");
      fwrite($fp_24,$string_24);
      fclose($fp_24);
      }

      1. Hallo Michi!

        Warning: implode(): Bad arguments. in /web/header.php on line 120
        betrifft folgende zeile im Script:
        $string_24 = implode("\n" , $array_24);

        Ist $array_24 wirklich ein Array?

        Also, ich hab mal folgendes probiert:
        $array_test  = array('bla','blub','muh');
        $string_test = implode("\n", $array_test);
        // test-ausgabe
        var_dump($array_test);
        var_dump($string_test);

        Und das funktioniert problemlos, also ist meine einzige Idee, daß etwas mit Deinem Array nicht stimmt.

        MfG
        Götz

        --
        Losung für Montag, 8. März 2004
        Der Herr, dein Gott, wandelte dir den Fluch in Segen um, weil dich der Herr, dein Gott, lieb hatte. (5. Mose 23,6)
        Jesus sprach zu der geheilten Frau: Meine Tochter, dein Glaube hat dich gesund gemacht; geh hin in Frieden und sei gesund von deiner Plage! (Markus 5,34)
        (http://www.losungen.de/heute.php3)