ASP kezdőknek 4. – Sütik és menetek

 

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