< PHP

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ő

setcookie("nev", "Nagy József", time()+3600);

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

session_destroy();

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