Hallo liebes Forum,
ich habe ein kleines Statistiktool entwickelt, mit dem ich die Seitenaufrufe meiner Websites zählen möchte.
Ich habe hierzu auf dem www.serverxyz.de ein PHP Script track.php.
Diese Datei track.php wird auf jeder meiner Internetpräsenzen mittels "Trackingpixel" eingebunden:
<img src="http://www.serverxyz.de/track.php?website=seite1" width="1" height="1">
Bei der Einbdindung wird mittels Query-String der Name der Internetpräsenz übermittelt.
In der Datei track.php wird dann mittels PHP in der MySQL Tabelle 'zugriffe':
zugriffe
---------
website [string]
zugriffe_anzahl [int]
der Zahl in zugriffe_anzahl eins hinzu addiert... und zar an der Stelle, wo die zelle website identisch mit dem website aus dem Query-String ist.
So sieht das PHP/MySQL aus:
mysql_query("
UPDATE zugriffe
SET zugriffe_anzahl = zugriffe_anzahl + 1
WHERE website = '".$_GET["website"]."'
;");
Dies funktioniert soweit auch wunderbar. Es gab allerding ein Problem: Bei diesem Script wurden die Impressions der Seite gezählt, auf der das Pixel eingebunden wurde. Ich mächte allerdings die "eindeutigen Besuche" tracken.
D.h.: Wenn ein Besucher auf eine Website kommt, auf der mein Trackingpixel eingebunden ist und anschließend z.B. auf "Reload" im Browser klickt, so wird das Ganze doppelt gewertet (zugriffe_anzahl wird zwei mal erhöht.).
Ich habe mir nun folgendes einfallen lassen:
In track.php wird zuerst eine Session gestartet:
session_start();
Der Bereich, welcher den Zugriff in der MySQL Tabelle zählt wird um eine If-Abfrage erweitert, welche überprüft, ob in der Session ein Schlüssel mit dem Name der Website (also dem übermittelten Query-String 'website') vorhanden ist. Ist dies nicht der Fall, so wird der Besuch gezählt und der Name der Website in der Session initalisert:
if (!isset($_SESSION[$_GET["website"]])) {
mysql_query("
UPDATE zugriffe
SET zugriffe_anzahl = zugriffe_anzahl + 1
WHERE website = '".$_GET["website"]."'
;");
$_SESSION[$_GET["website"]] = "ja";
}
Zum Problem:
Auf meinem System (Windows 2000, Internet Explorer 6.0, Firefox 1.1) funktioniert das wunderbar... jeder Besuch wird nur einmal gezählt.
Ich habe allerdings bemerkt, dass das Ganze auf anderen Systemen nicht funktioniert
=> Bei einem Reload wird der Besucher doppelt gewertet.
Ich habe die Vermutung, dass auf diesesn Systemen die Session nicht gestartet bzw. initalisiert wird.
Woran kann das liegen? Habe ich Fehle rin meiner Überlegung mit der Session un der Reloadsperre?
Vielen Dank für Euere Hilfe
Maresa