Tartalomjegyzék
A PHP sütik és a munkamenetek
- Szerző: Sallai András
- Copyright © Sallai András, 2011
- Licenc: GNU Free Documentation License 1.3
- Web: http://szit.hu
Bevezetés
A sütik angolul cookie, melynek jelentése süti vagy keksz. A munkamenet angolul session. A sütik és a munkamenetek arra valók, hogy adatokat tároljunk a kliensről. A különbség a kettő között, hogy a süti a kliensprogramban tárolódik, addig a munkamenet a szervere oldalon (persze az azonosításhoz az is ad egy sütit.) A süti hosszú ideig is tárolható, a munkamenet csak a böngésző bezárásáig marad meg.
A sütiket szokás session cookie néven is emlegetni míg a munkameneteket sessionid néven.
Süti
A sütikről
A PHP nyelvben a sütiket a setcookie() függvénnyel állíthatjuk be.
Szintaxis:
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
name | A cookie neve |
value | A cookie értéke. Ez az érték a kliens számítógépén lesz tárolva. Lekérdezés $_COOKIE['cookiename'] |
expire | A cookie lejárati ideje. Ez egy Unix időbélyeg. A korszakváltás óta eltelt másodpercek. A time() függvénnyel megkapjuk az eddig eltelt másodperceket, amihez hozzáadjuk a hány másodperc múlva jár le. Például 30 nap: time()+60*60*24*30. Ha az érték 0, akkor a cookie akkor jár le mikor befejezzük a munkamenetet (A böngésző bezárása). Az értéket megadhatod Unix időbélyeggel is: DD-Mon-YYYY HH:MM:SS GMT. A PHP átkonvertálja. |
path | Útvonal a szerveren, ahol a cookie elérhető. Ha '/', akkor a cookie az aktuális tartományban van. Ha '/valami/', akkor a cookie a /valami/ könyvtárban érhető el. Az alapértelmezés az aktuális könyvtár. |
domain | Tartomány, ahol a cookie elérhető. Beállíthatod, például www.pelda.hu tartományt. |
secure | A cookie csak HTTPS kapcsolaton vihető át. Ha az érték TRUE, akkor csak titkosított lehet kapcsolat. |
httponly | Ha TRUE akkor a cookie csak HTTP protokollon mehet át. |
Süti beállítása
Előre meghatározott érvényességi ideig tárolásra kerülnek.
setcookie ("jegyzek", 1);
Egy óra lejárati idő
Süti lekérdezése
$tartalom = $_COOKIE['jegyzek'];
$tartalom = $HTTP_COOKIE_VARS["jegyzek"];
Be van-e állítva
if (isset($_COOKIE["cookie"])) ;
Munkamenet
Munkamenet indítása
A böngésző bezárás után automatikusan törlődnek.
Munkamenete a session_start(); utasítással indítunk.
Kötelezően az első utasítás kell legyen!
session_start();
Amelyik fájlban munkamenetet használunk, ott a fájl elején lefuttatjuk.
Munkamenet adat bejegyzése
Teszünk egy változót a munkamenetbe:
$_SESSION['jegyzek']=1;
A változó neve esetünkben jegyzek, de bármi más lehet.
Változó tartalmának vizsgálata
Van amikor csak azt vizsgálom, hogy be van-e állítva:
if ($_SESSION['jegyzek'] == 1) ;
Be van-e állítva a változó?
if(isset($_SESSION['jegyzek'])) { print("Be van állítva"); } else { print("Nincs beállítva"); }
Változó eltávolítása
unset($_SESSION['jegyzek']);
A session_unset az összes munkamenet változót felszabadítja.
Szintaxisa:
void session_unset ( void )
Használata:
session_unset();
A munkamenet törlése
Munkamenet neve
session_name("menet"); //beállítja a munkamenet nevét $menetnev = session_name(); // visszaadja az aktuális munkamenet nevét
Munkamenet azonosítója
session_regenerate_id(); //A munkamenet azonosítójának újragenerálása session_id("ksdflsdflsjdfldjflsjldfjkdf"); //beállítunk egy munkamenetazonosítót $az = session_id(); // lekérdezzük a munkamenet azonosítóját