Christian Seiler: Counter mit reloadsperre (aber nur für begrenzte zeit)

Beitrag lesen

Hallo Patrick,

ich habe mir einen Counter programmiert mit einer reloadsperre. das prob ist wenn ein user einmal drauf war wird er erst wieder gezählt wenn ein anderer drauf war. wie kann ich es machen das die sperre nach einer zeit aufgehoben wird für den user?

Du musst alle IPs und den jeweils aktuellen Zeitstempel in einer Liste speichern. Du könntest zum Beispiel eine Datenbank haben, die eine Tabelle mit folgenden Feldern besitzt: IP-Adresse, Zeitstempel

Sobald jemand auf den Counter zugreift, passiert folgendes:

  • Alle veralteten Einträge rauswerfen (d.h. wo der Zeitstempel der Einträge kleiner als aktueller Zeitstempel minus x Minuten ist) - das geht wunderbar mit einem bedingten DELETE
  • Nachsehen, ob die aktuelle IP bereits vorhanden ist
  • Falls ja: einfach den Counter ausgeben
  • Falls nein: die IP mit aktuellem Zeitstempel hinzufügen, Counter um eins erhöhen und dann erst den Counter ausgeben

Also in Pseudo-PHP-Code:

loesche_alte_eintraege ();

if (!aktuelle_ip_schon_vorhanden ()) {
  fuege_aktuelle_ip_ein ();
  erhoehe_counter();
}

gebe_counter_aus();

Über Sinn und Unsinn eines Counters wurde schon sehr häufig diskutiert.

Viele Grüße,
Christian