ebben a bemutatóban megtudhatja, hogyan tárolhat bizonyos adatokat a kiszolgálón ideiglenesen a PHP munkamenet segítségével.
mi a munkamenet
bár az adatokat cookie-k segítségével tárolhatja, de van néhány biztonsági problémája. Mivel a cookie-kat a felhasználó számítógépén tárolják, a támadó könnyen módosíthatja a cookie-tartalmat, hogy potenciálisan káros adatokat helyezzen be az alkalmazásba, amelyek megszakíthatják az alkalmazást.,
minden alkalommal, amikor a böngésző URL-t kér a kiszolgálóhoz, a weboldal összes cookie-adatát automatikusan elküldi a kiszolgálónak a kérésen belül. Ez azt jelenti, hogy ha 5 cookie-t tárolt a felhasználó rendszerén, amelyek mindegyike 4KB méretű, a böngészőnek 20KB adatot kell feltöltenie minden alkalommal, amikor a felhasználó megtekinti az oldalt, ami befolyásolhatja webhelyének teljesítményét.
mindkét problémát megoldhatja a PHP munkamenet használatával. A PHP munkamenet adatokat tárol a szerveren, nem pedig a felhasználó számítógépén., Egy munkamenet-alapú környezetben minden Felhasználót azonosítanak egy session identifier vagy SID nevű egyedi számmal. Ez az egyedülálló munkamenet-azonosító arra szolgál, hogy minden Felhasználót összekapcsoljon a szerver saját információival, például e-mailekkel, hozzászólásokkal stb.
tipp: a munkamenet-azonosítókat véletlenszerűen generálja a PHP motor, amelyet szinte lehetetlen kitalálni. Továbbá, mivel a munkamenet adatait a szerveren tárolják, nem kell minden böngésző kéréssel elküldeni.,
PHP munkamenet indítása
mielőtt bármilyen információt tárolna a munkamenet változókban, először el kell indítania a munkamenetet. Egy új munkamenet megkezdéséhez egyszerűen hívja a PHP session_start()
függvényt. Létrehoz egy új munkamenetet, majd létrehoz egy egyedi munkamenet-azonosítót a felhasználó számára.
az alábbi példában szereplő PHP kód egyszerűen elindít egy új munkamenetet.,
példa
letöltés
<?php// Starting sessionsession_start();?>
a session_start()
függvény először ellenőrzi, hogy létezik-e munkamenet, ha egy munkamenet azonosítóját keresi. Ha talál egyet, azaz ha a munkamenet már elindult, beállítja a munkamenet változókat, ha pedig nem, akkor új munkamenet-azonosítót hoz létre.
Megjegyzés: Az oldal elején a session_start()
függvényt kell hívni., mielőtt bármilyen kimenet által generált script a böngészőben, ugyanúgy, mint te, miközben a cookie-kat a setcookie()
funkció.
munkamenet adatok tárolása és elérése
az összes munkamenet adatot kulcsértékpárként tárolhatja a $_SESSION
superglobal tömbben. A tárolt adatok a munkamenet időtartama alatt érhetők el. Fontolja meg a következő szkriptet, amely új munkamenetet hoz létre, és két munkamenet változót regisztrál.,
hozzáférést a session adatok beállítása az előző példában a többi oldal ugyanazon a domain — egyszerűen újra az ülést hív session_start()
majd át a megfelelő gombot, hogy a $_SESSION
asszociatív tömb.
a fenti példában szereplő PHP kód a következő kimenetet adja meg.
Megjegyzés: ahhoz, Hogy elérje a session adatok, ugyanazon az oldalon van, nem kell, hogy újra az ülésen, mivel már elindult az oldal tetejére.,
egy munkamenet megsemmisítése
ha bizonyos munkamenetadatokat el akar távolítani, egyszerűen szüntesse meg a $_SESSION
asszociatív tömb megfelelő kulcsát, amint az a következő példában látható:
egy munkamenet teljes megsemmisítéséhez egyszerűen hívja asession_destroy()
függvényt. Ez a függvény nem igényel semmilyen érv, egyetlen hívás elpusztítja az összes munkamenet adatait.,
Példa
Letöltés
<?php// Starting sessionsession_start(); // Destroying sessionsession_destroy();?>
Megjegyzés: Mielőtt elpusztítják a munkamenet a session_destroy()
funkció, meg kell először újra a munkamenet környezet, ha nem már ott van használata a session_start()
funkció, hogy valamit, hogy elpusztítsa.
minden PHP munkamenetnek van egy timeout értéke – egy másodpercben mért időtartam -, amely meghatározza, hogy egy munkamenet mennyi ideig maradjon életben felhasználói tevékenység hiányában., Ezt az időtúllépési időtartamot a session.gc_maxlifetime
változó értékének módosításával módosíthatja a PHP konfigurációs fájlban (php.ini
).