aug
19
Írta: Tupacko, 2007-08-19, (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.:

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.
  • description
  • blogtercimlap
  • Linkter
  • bodytext
  • del.icio.us
  • NewsVine
  • Furl
  • Reddit
  • Spurl
  • Technorati
  • YahooMyWeb
  • co.mments
  • Google
  • Live
  • Ma.gnolia
  • TwitThis
( szavazat)
Loading ... Loading ...



Szólj hozza!

Név: 
Email: 
Weboldal *
Hozzaszólás: 
*Nem kötelező megadni, ha nincs weboldalad, akkor hagyd üresen!