számláló készítése IV.

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)

1 hozzászólás

  1. 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?

HOZZÁSZÓLOK A CIKKHEZ

Kérjük, írja be véleményét!
írja be ide nevét