phpbar.de logo

Mailinglisten-Archive

[php] Reload-Sperre mit Phplib-Sessions?

[php] Reload-Sperre mit Phplib-Sessions?

Daniel Schuster dan_(at)_schudan.de
Mon, 2 Oct 2000 10:28:19 +0200


> 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