Az ASP-ben, akárcsak
más szerver oldali nyelvekben a sütik (cookie-k) és menetek (session-ök)
arra használhatók, hogy nyomon tudjuk velük követni a látogatókat.
Eltárolhatjuk adataikat, bejelentkeztethetjük őket, vagy statisztikát
vezethetünk róluk.
A menetekről
Az ASP szerver számára egy menet tulajdonképpen egy látogatót azonosít.
Amikor egy látogató lekéri az első oldalt a szerverről, létrejön egy
az adott látogatóhoz kapcsolható session objektum, melyben változókat
tárolhatunk, és beállíthatunk néhány paramétert. Egy menetnek akkor lesz vége,
amikor a felhasználó bezárja a böngészőprogramját, vagy egy bizonyos
időn belül – ez általában kb. 20-30 perc – nem kér le újabb lapot a
szerverről.
Hogyan és mire használhatók a
menetek?
A meneteket általában a
felhasználók alapszintű auditálására szokták használni. Meg kell azonban
jegyezni, hogy fontos rendszerekhez ez nem igazán biztonságos módja a
beléptetésnek, viszont egy fórumhoz vagy webes játékhoz nyugodtan
használhatjuk.
Ez általában úgy működik,
hogy miután a látogató megadta a felhasználónevét és jelszavát, egy feldolgozó
szkript ellenőrzi a felhasználó adatait az adatbázisban, majd, ha a jelszó
stimmel, belépteti a felhasználót. Ehhez létre kell hozni a session
objektumban egy változót, ami megmondja, hogy a felhasználó bejelentkezett. A
legegyszerűbb, ha eltároljuk a felhasználónevet:
session("felhasznalo") = "Admin"
Később ezt a megadott
értéket bármelyik ASP szkriptből kiolvashatjuk az alábbi sorral:
valtozo =
Session("felhasznalo")
Így a session-ök segítségével
adatokat adhatunk át két ASP szkript között. És ami a lényeg: minden egyes
felhasználóhoz külön session objektum kapcsolódik, tehát egyedi adatokat is
tárolhatunk. Meg kell azonban jegyezni, hogy a session objektumban tárolt
értékek törlődnek, amint a menetnek vége szakad, állandó adattárolásra
tehát nem használható.
Sütik
A sütik hasonlóak a menetekhez, azzal a különbséggel, hogy ezek már állandó
adattárolásra is használhatók. A sütik a látogató számítógépén tárolódnak
és a böngészőprogram kérésre elküldi tartalmukat a szervernek. Minden
szerver csak a saját sütijeit tudja olvasni. A sütik a szerver
szempontjából szintén az adott látogatóra jellemzőek. Sütikkel általában a
látogató egyéni beállításait szokás elmenteni. Például, ha a weblapunknak van 3
különböző megjelenési színe, akkor a látogató kiválaszthatja, hogy neki
melyik tetszik leginkább, amit aztán eltárolunk egy sütiben és később,
mikor a látogató visszatér az oldalra, már automatikusan abban a színben adja
le a szerver az oldalt. Sütiket az alábbi módon hozhatunk létre:
response.cookies("suti") = "szoveg"
response.cookies("suti2") = 123
A sütikben, akárcsak a változókban, bármilyen típusú adat tárolható. Minden
sütinek van érvényességi ideje, az érvényességi idő leteltével
törlődik, hacsak a szerver ezt nem módosítja. A lejárati időt az
alábbi módon tudjuk beállítani:
response.cookies("suti").expires = now() + 14
A fenti példában a süti lejárati idejét az aktuális dátumhoz képest 14
nappal előbbre állítottuk, tehát a süti 2 hét múlva fog lejárni.
Ezt az értéket a szerver módosíthatja, de csak a lejárat előtt. Utána a
benne tárolt adat törlődik. Mivel a sütik a látogató számítógépén
tárolódnak, azokat a látogató is törölheti és ilyenkor a szerver számára úgy
látszik, mintha létre sem hoztuk volna.
Speciális trükkök
Most pedig bemutatnék néhány hasznos elemet, amik szorosan kapcsolódnak a
menetekhez.
Menetazonosító
Minden menethez tartozik egy
egyedi azonosító, amivel egyértelműen azonosítani tudunk egy felhasználót.
Ennek használatával nagyobb biztonsággal tudjuk megoldani a bejelentkezéseket.
Ezt az azonosítót a szerver generálja minden menethez, mi nem tudjuk
megváltoztatni. Lekérdezni az alábbi módon lehet:
Azonosito = Session.SessionID
Lokális azonosító
Egy másik hasznos elem a lokális azonosító. Ennek segítségével
egyszerűen meg tudjuk adni pl. a dátumok formázását. Minden
országhoz tartozik egy azonosítószám. Az LCID-nek megadhatunk egy ilyen
azonosító számot, és ezek után a szerver az adott országnak megfelelően
fogja formázni a számokat, dátumokat és a pénznemet. Minden menethez
megadhatunk különböző LCID értéket, ezáltal megoldható, hogy minden
látogató a saját országának megfelelő formában lássa az értékeket. Az
alábbi példa az aktuális menet lokális azonosítójának Magyarországot
állítja be:
Session.LCID = 1038
Ez után a sor után a szám, dátum, idő és pénznem formátumát a
Magyarnak megfelelően fogja beállítani a szerver. Az alábbi linken
megtekinthetjük a különböző országokhoz tartozó kódokat: http://www.123hostnow.com/articles/LCID.asp
Lejárati idő
Mint már korábban írtam, a meneteknek van automatikus lejárati idejük. Ez
alapban általában 20 perc. Ezt az értéket tudjuk megváltoztatni Timeout
tulajdonsággal. Az alábbi sorral a lejáratot 30 percre állítjuk be:
Session.Timeout=30
Menetek törlése
Egy-egy menetet mi magunk is törölhetünk, ha meghívjuk az Abandon
metódust. Ennek meghívása után a szerver még feldolgozza az adott ASP oldalt
(tehát addig nem törli a menetet és a benne tárolt értékek még elérhetők,
amíg az oldal fel nincs teljesen dolgozva) és utána törli a menetet. Ha a
felhasználó egy újabb oldalt kér le a szervertől, akkor egy új menet fog
megindulni. Példa:
Session.Abandon
Most tehát már tudunk dolgozni a sütikkel és menetekkel is. A cikksorozat
következő részében a globális szerverváltozókkal és az ASP
alkalmazásra vonatkozó adatokkal fogunk foglalkozni.
Karsai Balázs - moha@mailbox.hu