Counter für Besucher letzte 24 Stunden
Michi
- php
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
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
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);
}
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