[[oktatas:programozás:php|< PHP]] ====== A PHP sütik és a munkamenetek ====== * **Szerző:** Sallai András * Copyright (c) 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