Counter mit reloadsperre (aber nur für begrenzte zeit)
Patrick
- php
0 David Tibbe0 Matze Rolf0 Christian Seiler0 patrickn0 Philip
Hallo,
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?
mein script sieht mommentan so aus:
<?php
include("../db.inc.php");
$anzahl_hits = $datensatz[num_visits];
$last_ip = $datensatz[last_ip];
$remote = $REMOTE_ADDR;
if ($remote == $last_ip) {
//Hit wird nicht gezaehlt
} else {
$new_hit = $anzahl_hits + 1;
mysql_connect("localhost", "$benutzer", "$passwort");
mysql_select_db("$db");
$sql = "UPDATE sd_models set last_ip = "$remote",num_visits = "$new_hit" WHERE user = '$user'";
$result = mysql_query($sql);
mysql_close();
}
//Hits anzeigen
echo "<b>SedCard aufrufe: $datensatz[num_visits]</b>";
?>
mfg,
Patrick
Hallo
Du speicherst noch dir Uhrzeit (zB in Form eines Timestamps) mit. Dann überprüfst du vor dem Zählen die verstrichene Zeit. Ist es genug, so zähle erneut, ansonsten halt nicht.
Aber die Diskussion "Ist ein Counter sinnvoll" hatten wir wohl schon zu genüge :)
Grüße
David
Das einfachste ist, du platzierst ein Cookie mit spezifischer Lebensdauer, z.B. 15min. Ist das Cookie bereits vorhanden, lässt du den Zähler nicht klingeln - ist keins vorhanden wird der Aufrufer als neuer Besucher gewertet und du lässt den Counter rasseln.
Grüße...
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:
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
Hallo,
wollte es jetzt mit einem cookie machen.
funzt nur nicht. es wird jetzt immer gezählt.
wo ist der fehler??
<?php
include("../db.inc.php");
$anzahl_hits = $datensatz[num_visits];
//$last_ip = $datensatz[last_ip];
$remote = $REMOTE_ADDR;
if ($remote == $last_ip) {
//Hit wird nicht gezaehlt
} else {
@setcookie( "last_ip", $remote, time()+900, "/", 0);
$new_hit = $anzahl_hits + 1;
mysql_connect("localhost", "$benutzer", "$passwort");
mysql_select_db("$db");
$sql = "UPDATE sd_models set last_ip = "$remote",num_visits = "$new_hit" WHERE user = '$user'";
$result = mysql_query($sql);
mysql_close();
}
//Hits anzeigen
echo "<b>SedCard aufrufe: $datensatz[num_visits]</b>";
?>
mfg,
Patrick
Hallo,
Hi
Ich bediene mich jetzt auch einfach mal dem "Pseudo-PHP-Code":
if(!cookie_ist_gesetzt()) {
setze_cookie();
zähler_plus_eins();
}
zeige_counter();
mfg,
Patrick
Philip