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.:
1
2
| 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.
1
2
3
| 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:
1
2
3
4
5
| $_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.
Ezek az ikonok ún. közösségi könyvjelző oldalakra mutatnak, ahol meg lehet osztani másokkal is amit fontosnak találsz.