home 2024. április 17., Rudolf napja
Online előfizetés
A PHP-szessziók
Erdsoft
2019.08.09.
LXXIV. évf. 31. szám
A PHP-szessziók

Ahogy a weboldal egyre szofisztikáltabb lesz, a kódnak is lépést kell tartania. Amikor a weboldal olyan fázisba jut, ahol felhasználói adatokat kell továbbítani az egyik oldalról a másikra, érdemes elgondolkodni a PHP-szessziók használatán.

Egy normál HTML-weboldal nem továbbít adatokat az egyik oldalról a másikra. Vagyis minden információt elfelejt, amint egy új oldalt töltünk be. Ez gondot okoz az olyan funkciók alkalmazása során, mint például a kosár, melynek működéséhez fontos, hogy ezek az adatok (például a kiválasztott termék) megmaradjanak, akkor is, ha a felhasználó új oldalra lép.

PHP-szessziók — áttekintés

A PHP-szessziók megoldják a fent említett gondot, hiszen lehetővé teszik, hogy az információk megőrződjenek a szerveren a későbbi használat érdekében (pl. felhasználónév, kosárba tett termékek stb.). A szesszióinformációk ideiglenesek, és általában röviddel azután törlődnek, hogy a felhasználó elhagyja a weboldalt.

Fontos elgondolkodni azon, hogy a szessziók megfelelnek-e a weboldal igényeinek. Azokban az esetekben, amikor hosszan tartó adattárolásra van szükség, más megoldást kell keresni — ilyen megoldást nyújtanak például a MySQL adatbázisok.

A szessziók úgy működnek, hogy egyedi azonosító számot (UID) hoznak létre minden látogató számára, és a változókat ez alapján az ID-szám alapján őrzik. Ez segít abban, hogy két felhasználó adatai ne keveredjenek össze, ha azonos weboldalra látogatnak.

Megjegyzés: Ha nem vagy jártas a szessziók alkalmazásában, nem tanácsoljuk, hogy szessziókat használj egy olyan weboldalon, amelynél magas fokú biztonság szükséges.

PHP-szessziók — hogyan kezdj hozzá?

Mielőtt még elkezdhetnéd szesszióba gyűjteni a felhasználói adatokat, el kell indítanod az első szessziót. A szesszió indításának a kód legelején kell lennie, mielőtt bármilyen HTML vagy szöveg el lenne küldve.

Mutatunk egy egyszerű scriptet, melyet a PHP-kód elejére kell helyezni, hogy megkezdjük a PHP-szessziót.

PHP-kód:

<?php

session_start(); // kezdd meg a PHP-szessziót!

?>

Ez az apró kódrészlet regisztrálja a felhasználó szesszióját a szerveren, és lehetővé teszi, hogy egy egyedi azonosító szám legyen a felhasználó szessziójához rendelve, és megkezdődjön a felhasználói adatok mentése.

A szesszióváltozó elmentése

Amikor szeretnénk megőrizni a felhasználói adatokat egy szesszióban, használhatjuk a $_SESSION asszociatív tömböt. Ez az a hely, ahol őrizzük, és ahonnan lekérjük a szesszió adatait. A PHP korábbi verzióiban más módok is voltak erre, de a frissítéseknek köszönhetően ma már ez a helyes megoldás.

PHP-kód:

<?php

session_start();

$_SESSION['views'] = 1; // szessziós adatok mentése

echo 'Pageviews = ' . $_SESSION['views']; // adatok lekérése

?>

 

Megjelenítés a böngészőben:

Pageviews = 1

Ezzel a példával bemutattuk, hogyan tudjuk elmenteni a változót a szesszió asszociatív tömbjébe, és hogyan tudjuk lekérni az adatokat ugyanebből a tömbből.

Az isset funkció használata

Most, hogy megtanultuk a $_SESSION tömb használatát, rátérhetünk a szessziók valódi funkcionalitására. Ha létrehozunk egy változót, és egy szesszióban őrizzük meg, feltételezhető, hogy szeretnénk használni is valamikor a jövőben. Mielőtt azonban használnánk egy szessziós változót, feltétlenül le kell ellenőrizni, hogy létezik-e már!

Itt kerül képbe a PHP isset funkciója. Az isset egy olyan funkció, amely bármilyen változóról meg tudja állapítani, hogy be van-e állítva, vagyis van-e már hozzárendelve érték.

Az előző példánk segítségével létrehozhatunk egy nagyon egyszerű számlálót, mely bemutatja, hányszor nyitották meg az oldalunkat. Az isset funkciót fogjuk használni arra, hogy ellenőrizzük, létre lett-e már hozva a pageview változó. Ha igen, akkor növeljük a számlálót, ha nem, akkor pedig létrehozzuk, és az értékét 1-re állítjuk.

PHP-kód:

<?php

session_start(); 

if (isset($_SESSION['views'])) {

    $_SESSION['views'] = $_SESSION['views'] + 1;

}

else {

    $_SESSION['views'] = 1;

}

 

echo 'views = ' . $_SESSION['views'];

?>

 

Az első alkalommal, amikor lefuttatjuk ezt a scriptet egy frissen megnyitott böngészőben, az if állítás hamis lesz, mert még nincs elmentve egy szessziós változó sem (views). Ha viszont frissítjük az oldalt, az if állítás már igaz lesz, és a számláló növekszik. Minden alkalommal, amikor újraindítjuk a scriptet, a számláló egy megtekintéssel növekszik.

A szesszió törlése és megsemmisítése

A szesszió adatai ideiglenesek, és nem feltétlenül szükséges tisztítanunk magunk után, de bizonyos esetekben szükség lehet arra, hogy kitöröljük az adatokat. Például, ha a vásárlás után szeretnénk kiüríteni az ügyfél kosarát.

PHP-kód:

<?php

session_start(); 

if (isset($_SESSION['cart'])) {

    unset($_SESSION['cart']);

}

?>

 

A szesszió akár teljesen meg is semmisíthető:

PHP-kód:

<?php

session_start();

session_destroy();

?>

A session_destroy funkció újraindítja a szessziót, ezért csak akkor tanácsos használni, ha nem baj, hogy elveszik az összes szessziós adat.

Jó gyakorlást!

 


 

Nyereményjáték

Rovatunk elsődleges célja, hogy közelebbről is bemutassa a legismertebb webtechnológiákat. Azok között az olvasók között, akik minden héten követik rovatunkat, azaz velünk tanulják a programozás alapjait és kitöltik a feladatsort, a sorozat végén egy laptopot sorsolunk ki.

A játék heti kérdése:

Mi nem lehet a szesszió megkezdése előtt?
1. HTML-kód
2. PHP-kód
3. Sem HTML-, sem PHP-kód
 
A választ a tanulok@erdsoft.com e-mail-címre kell elküldeni, a tárgysorba pedig a következőt kell beírni: HÉTNAP-TANULOK. Sok szerencsét!
 

 

Néhány szó rólunk:

Az ErdSoft (www.erdsoft.com) 2011-ben alakult meg. Csapatunkat a fiatalos lendület, a szakértelem, a folyamatos tanulás és tapasztalatgyűjtés jellemzi. Ügyfeleinknek igyekszünk teljes körű szolgáltatást nyújtani — bátran fordulhatnak hozzánk, legyen szó webfejlesztésről, alkalmazásokról, SEO-optimalizálásról, grafikai tervezésről, marketingről vagy szövegírásról. Csapatunk sikerét mi sem bizonyítja jobban, mint a több száz elkészült weboldal és a számos elégedett ügyfél Szerbiában, Magyarországon és az Egyesült Királyságban.

Hozzászólások
Hozzászólások
0
Hozzászólás küldése
1000 karakter áll rendelkezésére
A megjegyzésekben kifejtett vélemények a hozzászólások szerzőinek magánvéleményei, és nem tükrözik az internetes portál véleményét. A megjegyzéseket moderáljuk és jóváhagyjuk az általános szerződési feltételeknek megfelelően.
Támogatóink
Az oldal sütiket használ, hogy személyre szabjuk a tartalmakat és reklámokat, hogy működjenek a közösségi média funkciók, valamint hogy elemezzük a weboldal forgalmát. Bővebben a "Beállítások" gombra kattintva olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat..