DarkGhost küldött be egy leírást arról, hogy hogyan készítsünk olyan számlálót, amely a „visszatérő látogatókat” nem számolja…
A szkript (counter4.zip) valójában csak egy függvény, amely meghívásákor egy file-ban megnézi a számláló értékét és visszaadja azt… Amennyiben nincs beállítva süti, akkor növeli eggyel a visszaadás előtt, és létrehoz egy sütit, így a következő oldallehíváskor nem fog számolgatni.
A függvény 3 paramétert fogad el, de mindegyiknek van egy alapértéke:
paraméter | mit állít be | alapérték |
---|---|---|
filename | Annak a filenak a nevét adja meg, amiben a számláló értéke van tárolva | counter.txt |
cookiename | Annak a sütinek a nevét adja meg, amelyben tárolva van, hogy volt-e már számlálás… | CounterCookie |
timeout | A két számolás közti idő órában… | 1 |
Használata
Mint mondtam a program sütiket használ az adatok tárolására. A HTTP specifikáció szerint a sütinek a fejlécben kell megérkezniük (tehát a valós file kiküldése előtt). A használata ezzel egy kicsit bonyolultabb, mint egy függvény-hívás, de azért nem kell tőle megijedni, nem bánt ;)
Annak a file-nak, amiben szeretnénk lehívásokat számolni az elejében (eleje = első sor) írjuk a következőket:
1 2 3 4 | <?PHP include 'function_counter.php'; $counter = Counter() ?> |
(Amennyiben a Counter függvényt paraméterezni szeretnénk, természetesen megtehetjük… pl.:
1 | Counter('counter1.txt', , 12); |
Így csak 12 óránként menti el az adatokat és egy counter1.txt-be)
Ezután ahol szeretnénk kiíratni a számlálónk értékét írjuk ezt:
1 | <?PHP print $counter; ?> |
Pl.:
1 | Eddig összesen <?PHP print $counter; ?> látogatónk volt... |
Tipp
Természetesen így egy file-al több számlálót is tudunk működtetni…
Például ha minden lapunkról külön statisztikát szeretnénk, akkor mindegyiknek másik filet megadva pontos adatokat kaphatunk.
Például:
1 2 3 | <?PHP include 'function_counter.php'; $counter = Counter(basename(__FILE__)); ?> |
A leíráshoz tartozó fájl letölthető innen: counter4.zip.
Szerző: DarkGhost (darkghost.atw.hu)
Jujj működik^^ köszönet érte:) Viszont azt az órás dolgot nem egészen értem… igaz hogy nem minden lapfrissítésnél, de egy nap többször is számol egy embert (pl engem…). Hogy tudnám azt megcsinálni, hogy 1 nap csak egyszer számoljon, max 2x?