Session, azaz munkamenetkezelés PHP-ban (Munkamenet indítása, session változók létrehozása, munkamenet megszűntetése)

Ebben a leckében bemutatjuk a session-öket, azaz a munkameneteket PHP nyelv alatt.

Session, azaz munkamenetkezelés PHP-ban (Munkamenet indítása, session változók létrehozása, munkamenet megszűntetése) című cikk borítóképe

Session, azaz munkamenetkezelés PHP-ban (Munkamenet indítása, session változók létrehozása, munkamenet megszűntetése)

Ebben a PHP leckében bemutatjuk a session-öket, azaz a munkameneteket. Valószínűleg már mindenki hallott arról a kifejezésről, hogy munkamenet, most egy kicsit mögé nézünk, bemutatjuk, hogy mi is ez pontosan és azt, hogy hogyan kell létrehozni egy munkamenetet, session-t PHP-ban, illetve azt is, hogy hogyan kell törölni azt.

Mi az a session, munkamenet?

A HTTP protokoll egy állapotmentes protokoll, amely azt jeleneti, hogy két kérés között a webszer képtelen kapcsolatot teremteni. Ebből kifolyólag következik az, hogy ha egy weboldalon belül átkattintunk egy másik aloldalra, cikkre, bármire, akkor egy teljesen új kapcsolat keletkezik. Egy újabb kattintásnál pedig egy újabb kapcsolat. A HTTP protokoll ezen tulajdonságának az a következménye, hogy ha egy felhasználó elkezd barangolni a weboldalunkon, akkor a szerver alapvetően nem fog tudni róla, hogy ez ugyanaz a felhasználó vagy egy másik.

A HTTP ezen hiányosságát tudjuk áthidalni a PHP session-jével, hiszen segítségével információt tárolhatunk egy felhasználóra vonatkoztatva, mely az egész weboldalon érvényes lesz.

Egy munkamenet csak addig él, amíg a felhasználó be nem zárja a böngészőt.

Munkamenet indítása PHP-ban (session start)

Ahhoz, hogy a PHP-ban munkameneteket tudjunk kezelni, először el kell indítanunk, vagy kezdenünk egy sessiont. Ezt az alábbi szintaktikát követve tehetjük meg.


Szintaxis:

session_start();

Ez létrehoz egy “$_SESSION” nevű globális változót. Ebbe kell elhelyeznünk majd a munkamenethez szükséges adatokat.


Példa session használatára PHP-ban:

PHP kód

<?php
  session_start(); // munkamenet indítása
?>
Code language: HTML, XML (xml)


Egy session elindítása pontosan ennyiből áll, se többől, se kevesebből. Egy munkamenet indításnak nincs szemmel látható következménye a weboldalon.

Adatok elhelyezése a PHP session-ben, munkamenetben PHP nyelven

Miután elindítottunk egy munkamenetet a PHP-ban, el kell helyeznünk benne valamilyen adatot. Fentebb írtunk a “$_SESSION” globális változóról. Ez lesz a segítségünkre, hiszen ebbe tudjuk elhelyezni a munkamenet során tárolandó adatokat.


Szintaxis:

$_SESSION["VÁLTOZÓNÉV"] = ÉRTÉK;
Code language: PHP (php)

A globális változóba való adatelhelyezés körülbelül ugyanolyan egyszerű, mint, ha egy sima változóba tennénk adatokat. Előszőr meghatározzuk, hogy mibe ($_SESSION[“VÁLTOZÓNÉV”]), majd azt, hogy mit (ÉRTÉK) teszünk.


Példa adatelhelyezésre $_SESSION globális változóba PHP nyelven:

PHP kód

<?php
  session_start(); // munkamenet indítása
  $_SESSION["nev"] = "László"; // munkamenet "nev" változójába beleraktuk a "László" értéket
?>
Code language: HTML, XML (xml)


A fenti példának sincs szemmel látható eredménye. Először létrehoztuk a munkamenetet, majd létrehoztunk egy “nev” változót a session-ön belül.

PHP munkamenet, session változó értékének felhasználása

Ugyebár azt mondtuk, hogy a munkamenetekre azért van szükség, hogy egy weboldal különböző aloldalain keresztül is tudjuk követni a felhasználót. Például, ha az egyik aloldalon megadja a nevét, akkor a következő aloldalra a HTTP ne felejtse el. Egy bekezdéssel feljebb bemutattuk, hogy hogyan kell adatokat elmenteni a munkamenet változójába, most megmutatjuk, hogy hogyan kell adatot kivenni belőle.


Szintaktika:

$_SESSION["VÁLTOZÓNÉV"]
Code language: PHP (php)

Ugyanúgy kell tennünk, mint egy sima változó esetében, szimplán hivatkozunk a nevére. Ha kiszeretnénk íratni, akkor megtehetjük egy echo-val vagy print-tel. De akár egy feltételvizsgálatot is végrehajthatunk vele.


Példa session változó értékének a kiíratására:

PHP kód

<?php
  session_start(); // munkamenet indítása
  $_SESSION["nev"] = "László"; // munkamenet "nev" változójába beleraktuk a "László" értéket
  echo $_SESSION["nev"]; // kiíratjuk a munkamenet "nev" változóját
?>
Code language: HTML, XML (xml)

Eredmény

László


Szimplán kiechozzuk a “$_SESSION” globális tömb “nev” indexű elemét.

$_SESSION összes adatának kiíratása

Ha nem csak konkrétan egyetlen egy munkamenetadatot szeretnénk kiíratni, hanem az összeset, akkor azt is megtehetjük.


Szintaktika:

var_dump($_SESSION)

// vagy

print_r($_SESSION)
Code language: PHP (php)

A “var_dump” és a “print_r” segítségével is kiírathatjuk a $_SESSION tömb összes elemét.


Példa $_SESSION globális tömb összes elemének kiíratására:

PHP kód

<?php
  session_start(); // munkamenet indítása
  $_SESSION["nev"] = "László"; // munkamenet "nev" változójába beleraktuk a "László" értéket
  $_SESSION["eletkor"] = 23; // munkamenet "eletkor" változójába beleraktuk a "23" értéket
  $_SESSION["nem"] = "férfi"; // munkamenet "nem" változójába beleraktuk a "férfi" értéket
  var_dump($_SESSION); // kiíratjuk a munkamenet összes változóját
?>
Code language: HTML, XML (xml)

Eredmény

array(3) {
[“nev”]=> string(8) “László”
[“eletkor”]=> int(23)
[“nem”]=> string(6) “férfi”
}


A var_dump() szépen kilistázza a $_SESSION globális változó összes elemét.

PHP munkamenet változójának módosítása

Vannak olyan esetek, amikor a felhasználó módosít valamit, amit mi már eltároltunk a session-be. Természetesen ilyenkor arra is van lehetőség, hogy a munkamenet egy létező változóját felülírjuk.


Szintaktika:

$_SESSION["VÁLTOZÓNÉV"] = ÉRTÉK;
Code language: PHP (php)

A felülírás ugyanúgy történik, mintha egy új elemet hoznánk létre a munkamenet globális tömbjében.


Példa munkamenet változójának felülírására PHP-ban:

PHP kód

<?php
  session_start(); // munkamenet indítása
  $_SESSION["nev"] = "László"; // munkamenet "nev" változójába beleraktuk a "László" értéket
  echo "Előtte: " . $_SESSION["nev"]; // kiíratjuk a munkamenet "nev" változóját
  $_SESSION["nev"] = "Petra"; // munkamenet "nev" változójába beleraktuk a "Petra" értéket
  echo "<br>Utána: " . $_SESSION["nev"]; // kiíratjuk a munkamenet "nev" változóját
?>
Code language: HTML, XML (xml)

Eredmény

Előtte: László
Utána: Petra


Az 5. sorban egyszerűen felülírjuk a $_SESSION[“nev”] jelenlegi értékét egy újjal.

PHP session megszűntetése, munkamenet befejezése

Végül lehetőségünk van arra is, hogy a session változóit eltávolítsuk és megszűntessük a munkamenetet.

A munkamenetet nem kell megszűntetni minden oldalon! Megfontoltan használjuk ezt a lehetőséget, például, ha kijelentkezik a felhasználó.


Szintaxis:

session_unset();
session_destroy();

A “session_unset()” eltávolítja az összes munkamenet változót, míg a “session_destroy()” megsemmisíti, azaz megszűnteti a munkamenetet. Mind a kettőt célszerű használni.


Példa session, munkamenet megszűntetésére:

PHP kód

<?php
  session_start(); // munkamenet indítása
  $_SESSION["nev"] = "László"; // munkamenet "nev" változójába beleraktuk a "László" értéket
  echo "Törlés előtt: " . $_SESSION["nev"]; // kiíratjuk a munkamenet "nev" változóját
  session_unset(); // session változók eltávolítása
  session_destroy(); // munkamenet megszűntetése
  echo "<br>Törlés után: " . $_SESSION["nev"]; // kiíratjuk a munkamenet "nev" változóját
?>
Code language: HTML, XML (xml)

Eredmény

Törlés előtt: László
Törlés után:


Az eredményből láthatjuk, hogy a törlés előtt még létezik a munkamenetünk “nev” változója, de a két session megszűntető függvény kiadása után már nincs értéke.

Ha hasznos volt számodra, akkor kérlek oszd meg másokkal is, hogy ezzel támogass minket!