Munkamenet kezelés PHPban

Írta: | 2007. augusztus 19. | kategóriák: Adattárolás, Biztonság, PHP, Programozás

A munkamenetek (angol: session) hasonlóak a többeközt JavaScriptből is ismert sütikhez (cookies). A feladatuk adatok tárolása a háttérben, így példáúl a felhasználó belépséi adatai. Azonban egy nagy különbség a sütik és a munkamenetek közt, hogy míg a sütik a böngésző személyi számítógépén vannak tárolva (így nem biztonságos), addig a munkametek a szerver oldalon találhatóak. Minden böngésző ad egy azonosítót a munkamenetnek: session ID, amely egyedi kulcs a munkamenetre nézve (nagyon kevés az ismétlődés lehetősége). Az azonosító a szerver beállításai szerint tárolódhat URLben és/vagy sütiben. Lehetőség van a kettős tárolásra is, bár nem ajánlott.

A leírásban a PHP munkamenet kezeléséről lesz szó. A munkamenet indításához, létrehozásához a session_start() parancsot kell meghívni (ha az már nincsen automatikusan elindítva, a szerver beállításától függ). Abban az esetben, amikor a munkamenet azonosítója sütikben is tárolt, a munkamenetett még a headerben létre kell hozni (bármiféle szöveg kiírása előtt, más szavakkal a html tag előtt). A munkamenetnek adhatunk egy egyszerűbb nevet is, bár az azonosítóját is lecserélhetjük. Mindkét műveletet a munkamenet indítása előtt kell elvégezni.

A session_name() a session_id-t tároló süti/url paraméter nevét adja meg. A függvényt ha azt paraméterezzük beállítja a megadott nevet, ellenkező esetben visszatéríti a használatban lévő nevet, pl.:

session_name("munkamenet"); //beállítja a munkamenet nevét
$munkamenet_neve = session_name(); // visszaadja a jelenlegi munkamenet nevét

A session_id() is hasonlóan működik, még a munkamenet indítása előtt kell meghívni a függvényt. Ha paraméterezzük beállítja a munkamenet azonosítóját, paraméter nélkűl a munkamenet jelenlegi azonosítóját kapjuk válaszúl. Továbbá ide tartozik az új azonosítót generáló függvény is: session_regenerate_id(). A függvény segítségünkre lehet olyan esetekben, amikor szükségünk van egy újabb munkamenet azonosítora.

session_regenerate_id(); //új azonosítót kér a munkamenetnek
session_id("sdg86sg6s896g896s89ys89hysd9h8"); //beállítunk egy azonosítót
$munkamenet_id = session_id(); // visszaadja a jelenlegi munkamenet azonosítóját

A munkamenet tartalmát anélkül is megsemmisíthetjük, hogy töröljük azt, majd újra indítsuk. A tartalom törlésére szolgáló függvény a session_unset(). Amennyiben törölni szeretnénk a munkamenetünk állományát a szerverről a session_destroy() függvény a meghívandó eljárás.

A munkamenet előnyei közés sorolhatjuk a biztonságos adattárolást és a könnyü kezelhetőséget is. A munkamenettel tömb-műveleteket végezhetünk, nem vagyunk kötelezve arra, hogy fügvényekkel tároljunk adatokat, illetve, hogy függvények meghívásával nyerjük ki azokat. A következőpélda bemutat néhány műveletet:

$_SESSION['kulcs'] = "adat"; // beletesz 'kulcs' azonosítóval egy karakterláncot ("adat")
$_SESSION['kulcs2'] = 2; // beletesz 'kulcs2' azonosítóval egy számot (2)
$valtozo = $_SESSION['kulcs']; // átadja az értékét
$_SESSION['kulcs2']++; // megnöveli a tárolt értéket (2++ = 2 + 1 = 3)
echo $_SESSION['kulcs2']; // kiírja az értéket: 3

A munkamenetek kezelése sokkal komplexebb utakon is elérhető és vannak kiegészítő függvényei is, amelyekről a leírásban nem esett szó. Az így kimaradt függvények nagyon ritkán használtak, de további információt találhatsz a php hivatalos leírásában.



Értékeld a bejegyzést!

Loading ... Loading ...

A bejegyzésre érkező kommenteket elérheted RSS 2.0 formájában vagy emailben is:

A bejegyzéshez tartozó trackback cím, illetve a permalink.

A megjegyzéseket kérlek, tedd fel érthető és illendő módon, ne fikázz le másokat, mert nem tudnak valamit, amit te már igen. A kommentár lehetőleg függjön a bejegyzéshez :)

kötelező
kötelező, titok marad
ha nincs, maradjon üres