Aki foglalkozott mr javascripttel, annak ismers lehet a stik (cookie) hasznlata. Mkdse ugyanaz, csak itt jval egyszerbb a megvalstsa. A cookie s a session jl hasznlhat ltogatk azonostsra, adatok tvitelhez a kvetkez oldalra - ezrt ezek a fejletteb PHP oldalak nlklzhetetlen kellkei.
Mi a sti (cookie)?
A sti egy viszonylag kis mennyisg adatsor, amit a bngsz ment a kliens szmtgpre egyszer szveges adatfjl formjban. A fjl ltrehozsa, kiolvassa s mdostsa automatikusan, a httrben trtnik s termszetesen az adott oldal bezrsakor is megmarad. Mivel a sti adatfjlja szorosan kapcsoldik az t ltrehoz weboldalhoz, az adott oldal ksbbi megltogatsakor rendelkezsre ll az adatfjl tartalma. A stik hasznlatt a ltogat bngszje biztonsgi belltsaival korltozhatja, vagy blokkolhatja.
Mire j neknk ez? Segtsgvel a ltogat egyni belltsai (pl. kivlasztott oldaldesign) trolhatk egy ksbbi ltogats esetre. Hasznlatval a szerveren lthatk s akr webstatisztikban rgzthetk a ltogati szoksok (utols ltogats ideje, felkeresett oldalak...), de gyakran hasznljk a ltogat vdett oldalakra val belpse utn a bejelentkezett llapot megjegyzsre, adatok egyik oldalrl a kvetkez oldalra trtn tovbbtsra is. A vonatkoz szabvny szigor biztonsgi elrsokat tartalmaz, gy minden ltrehozott stit csak az t ltrehoz domainrl lehet elrni - a klnbz domainokrl letlttt oldalak soha nem frhetnek hozz egyms adataihoz, mg akkor sem, ha tbb bngszablak van egyszerre nyitva. A stik megmaradnak a bngsz bezrsa utn, st a gp lelltsval sem trldnek, amg a lejrati idejk le nem telt.
Minden gp egy domainhoz maximum 20 stit trolhat, amelyek a kvetkezket tartalmazzk:
- a sti neve
- rtke
- a lejrati idpont
- a sti szrmaztatsi helynek elrsi utvonala
- a kapcsolat biztonsgos voltnak jellse
Egy sti adatfjl maximum 4kb nagysg lehet, ami kb. 4000 karaktert jelent - szval terjedelemben nem korltoznak nagyon. Egy sti adattartalma kb. gy nz ki:
fjlnv: Felhasznalo_neve@audit.median.hufjl helye: c:\Document and Settings\Felhasznalo_neve\Cookies (Windows XP rendszeren) median_count
81.182.190.181.310943119250000031469035604363000822
audit.median.hu/
1024
2759538432
30859208
1582018384
29659796
*
Hogyan rjk el a szerveren a kliensgpen trolt stit? A bngsz minden oldal krsekor elkldi az adott domainhoz a kliensgpen trolt sti adatfjl tartalmt. gy rheti el a szerveren fut PHP kd a neki sznt adatokat. A PHP-ben ezeket az adatokat a $_COOKIES tmb tartalmazza, ami - szupergloblis tmb lvn - mindenhonnan elrhet. Az j stik elhelyezsre, vagy azok mdostsra vonatkoz utastsok a HTTP fejlcben utaznak a szerverrl a kliens fel is.
fel...
A sti ltrehozsa
A stiket ltrehozhatjuk a HTTP fejlcben, a PHP header() parancsval, de ezzel felesleges foglalkozni, mivel a php fejleszti erre a clra egy specifikus fggvnyt, a SetCookie() beptett fggvnyt bocstanak rendelkezsre. A fggvny egy ktelez s tovbbi opcionlis adatot vr: a sti neve, rtke, lejrata, elrsi tja, a hasznlatra jogosult tartomny, s egy szm ami a biztonsgos kapcsolatot jelzi (ha ez 0 akkor mindenkpp menni fog a munka a stikkel). A sti nevn kivl a fenti adatokat nem ktelez megadni. A sti lejratt UNIX idblyegben kell megadni (UNIX idblyeg az 1970. janur 1. 1:00 ta eltelt msodpercek szma).
Sti elhelyezse a SetCookie() fggvnnyel:
<?php
setcookie( "belephet", "login_nev", time() + 3600, "/", "thomas98.hu", 0);
?>
ahol a time() az aktulis idt hatrozza meg, amihez 3600 msodpercet hozzadva 1 ra rvnyessget adtunk meg a stinknek. A sti neve belephet, rtke pedig a belpskor megadott loginnv.
Fontos:
- A stikben csak skalris (string, integer, double, vagy boolean) adattpusokat lehet trolni.
fel...
A sti mdostsa, trlse
Egy sti mdostshoz azt megnevezve berjuk a mdostott adatokat.
A sti trlsekor (pl. ha a ltogat kilp a vdett tartalombl) a lejrati idt mdostjuk egy mr elmlt idpontra: <?php
setcookie( "belephet", "login_nev", time() - 600, "/", "thomas98.hu", 0);
?>
gy a sti megmarad ugyan, de a tartalma nem lesz tovbb elrhet.
Fontos:
- Kdolskor nem felejtsk el, hogy a SetCookie() fggvnnyel csak a sti elhelyezsre adtunk utastst. A stit az aktulis oldalon nem, csak a kvetkez oldalon rhetjk el.
- A SetCookie() fggvny lefutsa eltt semmilyen kimenetet nem kldhetnk a kimenetre (HTML kdokat, st mg res bethelyet sem), mivel az els elkldtt kimenet eltt a PHP automatikusan ltrehozza a szksges fejlc adatokat. Ha errl megfeledkeznk, PHP hibazenet lesz a jutalmunk.
Forrs: Thomas Web Mhely |