Zugriffszähler erweitern?
moidaschl 29.10.2005 - 12:27 832 4
moidaschl
Vollzeit-Hackler
|
Mahlzeit! Ich habe einen Counter in eine Homepage implementiert, welcher sich auch die IP-Adressen merkt und man nur jeden Tag 1x registriert wird. Jetzt hab ich mir natürlich auch ein Logfile in der Datenbank angelegt und - siehe da - es scheinen ziemlich viele zugriffe von einem User in kurzer Zeit zu kommen, aber seht selbst: ip_addr udatum
80.121.33.144 1130577182
195.3.113.151 1130579000
195.3.113.149 1130579191
195.3.113.145 1130579212
195.3.113.146 1130579321
213.47.101.94 1130579408
195.3.113.150 1130580650
195.3.113.148 1130580691
195.3.113.159 1130580694
195.3.113.144 1130580736
Mir kommt es so vor, als würde sich da ein Telekom-User (Ripe.net - Abfrage von einer 195.3.113 IP) immer wieder neu einwählen und den counter inkrementieren. Jetzt würde mich interessieren was es da noch für möglichkeiten gibt ausser die schon von mir verwendete. Cookies? Was anderes serverbasiert? Vielleicht zum besseren Verständnis noch der Code meines Counters // Zuerst alle abgelaufenen Zeitstempel löschen
$zeitstempel = time() - 86400;
$sql = "DELETE FROM counter_ip WHERE udatum < '".$zeitstempel."'";
mysql_query($sql);
// Wenn der Tag ein neuer ist, Den Heute nach Gestern verschieben und Heute auf 0 setzen
$sql = "SELECT heute_date, heute FROM counter";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
$datum_db_heute = $row['heute_date'];
$counter_db_heute = $row['heute'];
}
if($datum_db_heute != date("d")) {
// daten unterschiedlich, heute nach gestern verschieben und heute auf 0 setzen
$sql = "UPDATE counter SET gestern = '".$counter_db_heute."', heute = '0', heute_date = '".date("d")."'";
mysql_query($sql);
}
// Daten des Aufrufenden auslesen (Kontrolle ob er schon mal da war)
$sql = "SELECT * FROM counter_ip WHERE ip_addr = '".$_SERVER['REMOTE_ADDR']."'";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0) {
// ADRESSE NOCH NICHT IN DER DB VORHANDEN
// -> Counter inkrementieren und IP-ADDR + Zeitstempel eintragen
increase_counter($_SERVER['REMOTE_ADDR'], time());
}
$sql = "SELECT gesamt, heute, gestern FROM counter";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
$counter_db_gesamt = $row['gesamt'];
$counter_db_heute = $row['heute'];
$counter_db_gestern = $row['gestern'];
}
// Hier dann Ausgabe der 3 Variablen Formatiert im Script
Funktion increase_counter function increase_counter($user_ip, $actual_date) {
$sql = "SELECT gesamt, heute FROM counter";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
$gesamt = $row['gesamt'];
$heute = $row['heute'];
}
$gesamt = $gesamt + 1;
$heute = $heute + 1;
$sql = "UPDATE counter SET gesamt = '".$gesamt."', heute = '".$heute."'";
mysql_query($sql);
$sql = "INSERT INTO counter_ip (ip_addr, udatum) VALUES ('".$user_ip."', '".$actual_date."')";
mysql_query($sql);
}
Danke im Vorraus moidaschl
|
Rektal
Here to stay
|
Dir ist schon klar dass sich die IP auch waehrend einer Session aendern kann? Trifft vor allem fuer AOL-User zu.
Im Prinzip kannst du nur, wenn der User permanente Cookies akzeptiert, ein aussagekraeftiges Tracking machen (darum surf ich immer ohne :-) ), du hast halt Streuung bei Clients die es nicht annehmen, nur Session Cookies annehmen oder sie nicht unterstuetzen (was im Endeffekt alles aufs selbe kommt).
Aber im Prinzip gilt immer: du darfst keinen Daten des Users wirklich vertrauen. Agent, Cookies, sind alles Dinge die ein User potentiell aendern kann. IP nicht willkuerlich, aber siehe AOL oben. Im Endeffekt wirst immer Streuung drin haben von leuten die sich nicht tracken lassen wollen oder von Gateways/Firewalls die bestimmte Dinge nicht durchlassen (Cookies).
|
moidaschl
Vollzeit-Hackler
|
Dir ist schon klar dass sich die IP auch waehrend einer Session aendern kann? Trifft vor allem fuer AOL-User zu.
Im Prinzip kannst du nur, wenn der User permanente Cookies akzeptiert, ein aussagekraeftiges Tracking machen (darum surf ich immer ohne :-) ), du hast halt Streuung bei Clients die es nicht annehmen, nur Session Cookies annehmen oder sie nicht unterstuetzen (was im Endeffekt alles aufs selbe kommt).
Aber im Prinzip gilt immer: du darfst keinen Daten des Users wirklich vertrauen. Agent, Cookies, sind alles Dinge die ein User potentiell aendern kann. IP nicht willkuerlich, aber siehe AOL oben. Im Endeffekt wirst immer Streuung drin haben von leuten die sich nicht tracken lassen wollen oder von Gateways/Firewalls die bestimmte Dinge nicht durchlassen (Cookies). Also ist "meine" Methode eigentlich sowieso die sicherste? Weil eben das einzige was mir noch einfallen würde wären eben clientseitig Cookies und Serverseitig nichts (ich kann ihn ja nur anhand der ip-adresse tracken) Naja kann man nichts machen, machts ein besseres Bild für die Sponsoren
|
Rektal
Here to stay
|
Professionelle Tracker (was fuer ein Ausdruck ...) setzen die Zahlen nicht 1:1 um. Ausserdem gibt es ja auch verschiedene Zahlen (Visits, Session, PIs, blabla). Meistens sind Unique Visits die wichtigsten Zahlen.
Wenn du die Cookies von der selben Domain setzt wo du den Content hast, bist aber mal auf der besseren Seite als die Otto-Normal Tracking-Betreiber. Diese sind ja meistens 3rd Party Cookies die immer mehr geblockt werden.
|
Dookie
Heimwerker
|
195.3.113.x ist der proxy-cluster von AON afaik. hab dasselbe problem und ursprünglich versucht auch den referer zu vergleichen, bringt aber wenig weil halt doch sehr viele leute mit dem gleichen browser unterwegs sind. schlussendlich hab ich mich einfach damit abgefunden das einige doppelt gezählt werden.
|