"We are back" « oc.at

Zugriffszähler erweitern?

moidaschl 29.10.2005 - 12:27 832 4
Posts

moidaschl

Vollzeit-Hackler
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
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:

Code:
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

Code: PHP
// 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
Code: PHP
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
Registered: Dec 2002
Location: Inside
Posts: 4526
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
Avatar
Registered: Aug 2002
Location: 1210, ABK-D/L
Posts: 4029
Zitat von Rektal
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 :D

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4526
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
Avatar
Registered: Sep 2003
Location: Mödling
Posts: 739
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.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz