Forum Doku Wiki Blog

Forumsarchiv 2004, März
Counter für Besucher letzte 24 Stunden

archivierte Beiträge lesen

  1. (PHP) Counter für Besucher letzte 24 Stunden von Michi, 08. 03. 2004, 09:48

Counter für Besucher letzte 24 Stunden

Der folgende Beitrag wurde am 08. 03. 2004, 09:48 Uhr von Michi veröffentlicht.

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

Counter für Besucher letzte 24 Stunden

Der folgende Beitrag wurde am 08. 03. 2004, 11:47 Uhr von Götz veröffentlicht.

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)

Counter für Besucher letzte 24 Stunden

Der folgende Beitrag wurde am 08. 03. 2004, 13:09 Uhr von Michi veröffentlicht.

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);
}

Counter für Besucher letzte 24 Stunden

Der folgende Beitrag wurde am 08. 03. 2004, 13:45 Uhr von Götz veröffentlicht.

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)

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4