Mailinglisten-Archive |
> Hallo Liste! Hallo Frank > Ich möchte vermeiden, daß ein User einen Zähler durch Reloads immer > weiter hochzählt. Ich habe hier vor kuzem per mail eine sichere, vielleicht etwas umständliche Methode zugeschickt bekommen. <schnipp> auf tobf.de ein Frameset, mit zwei Frames: 1. die eigntliche Seite (u. a. Wegen URL). 2. ein 0% großes Frame, indem eine fast leere Seite angezeigt wird: PHP-Skript welches die Benutzereinstellungen speichert (auf JEDEN Fall!) und überprüft ob gezählt werden darf oder nicht (sind die Benutzereinstellungen in den letzten 3 min schonmal gespeichert worden oder ist ?realcount=no engegeben?) -> wenn gezählt werden darf, zählt es weiter. Es wird auch ein META-Tag angegeben, dass es alle 2 min neu geladen wird (aber dann mit Angabe von ?realcount=no o. ä., damit erkannt wird, dass schon gezählt wurde.). Wenn Benutzereinstellungen in der Datei stehen und diese älter sind als 3 min, werden diese gelöscht. Überlegnung: wenn jemand die Seite betritt, wird diese angezigt (mit COunterstand nach dem letzten Benutzer -> zeigt die Anzahl der Benutzer voher an, nicht die Nummer des aktuellen Benutzers). Wenn er auf eine andere interne Seite wechselt (von home nach download, o. ä.) wird nicht gezählt, da diese Seiten mit dem COunter nichts zu tun haben (außer dass evtl die Zählerstand angezeigt wird). Drückt jemand 10 min nach dem ersten Seitenaufruf auf reload, wird nicht gezählt, da dann im unsichtbaren Frame die unsichtbare Seite mit Argument ?realcount=no neu geladen wird. Wenn in den ersten 2 min bzw. das komplette Frameset neugeladen wird, so wird auch nicht gezählt wenn die Benutzereinstellungen gleich geblieben sind. ***************************** ALS BENUTZEREINSTELLUNGEN sollte die IP-ADRESSE und die Var HTTP_USER_AGENT verwendet werden. ***************************** Der einzige Fall, dass unzulässigerweise gezählt wird ist, wenn sich die IP-Adresse eines Clients (bzw. auch die BROWSER-Kenung->was eigentlich ncith vorkommt) geändert hat und er sofort danach ins URL-Feld klickt unt ENTER drückt bzw. in den ersten 2 min reload drückt. Weil wenn sich die IP-Adresse ändert und reload gedrückt wird, die Seite aber schon länger als 3 min besucht wurde, so wird nicht gezählt, da ?realcount=no angegeben ist, die neue IP wird aber trotzdem gespeichert. warum wird dann realcount=no angegeben? Wenn die Datei im unsichtbaren Frame neu geladen wird, dann hat sie doch keine URL-Parameter, oder? wenn die seite (unsichtbar) das erste mal aufgerufen wird hat sie keine Parameter, in den META-Tag um sie nach 2 min neu zu laden schreiben wir aber einen rein. Dann hat sie beim 2. Aufruf URL-Parameter. Sonst würde ja immer wenn sich die IP eines Clients ändert gezählt werden, das wäre nicht gut! Damit kann mal wohl leben. Auf der eigentlichen Seite ein Bild. Dieses Bild ist dynamisch generiert, es zeigt die Zählerstand an. Ansonsten ist der Counter zwischenzeitlich echt gut geworden. Naja, bissle viel AUfwand, aber sonst. Wird ein Frameinahlt von einem 0 großen frame überhaupt geladen? das wäre ja gemein. <schnapp> Die Klugen Köpfe, die diesen "perfekten Counter" erfunden haben, haben ihn leider noch nicht implementiert, das müsste aber in den nächsten Wochen geschehen dan
php::bar PHP Wiki - Listenarchive