Web Tervezés - 9. Fejezet

PHP IV.

Fájlkezelés

Fájlok kezelésére többféle lehetőségünk is van.
A legáltalánosabb a C-szerű megközelítés.
Ha a fájlt soronként akarjuk beolvasni egy tömbbe, vagy az egész fájl tartalmát egy stringként tárolni, akkor használhatunk egyéb beépített eljárásokat is erre a célra.
Továbbá lehetőség van objektum orientált fájlkezelésre is.

Sok esetben nem elegendő, ha soronként egy string-et tárolunk le.
Összetettebb adatok tárolására egy lehetséges megoldás, ha vesszőkkel elválasztva írunk ki adatokat egy sorba.
Ilyenkor ügyelni kell rá, hogy nem lehet vessző a kiírt adatokban, mert akkor később nem tudjuk beolvasni.
Egy fokkal jobb megoldás, ha egy adatsorhoz tartozó értékeket egy tömbbe rakjuk bele, és ezt a tömböt sorosítva íratjuk ki a fájlba.
Ezt kétféleképpen is megtehetjük: serialize/unserialize vagy json_encode/json_decode.

Menetkövetés\viszonykövetés\session

Szerver oldalon fájlok nélkül is tárolhatunk adatokat a felhasználóról (rövid élettartammal).
Ezt hívják menetkövetésnek (session). A kliens az oldal megnyitásakor kap egy azonosítót (session id), melyet ezután minden megnyitásnál elküld a szervernek.
A szerver pedig az azonosító alapján adatokat rendel a felhasználóhoz. Általában ez az azonosító egy sütiként tárolódik, de az url végére írva GET paraméterként is átadható, illetve formokban egy rejtett mező is szolgálhat erre a célra.
Egy session általában a böngésző bezárásáig él.
A PHP több beépített függvényt is tartalmaz a session kezelésére. A session tartalmát a $_SESSION globális változóból érhetjük el.
Ahhoz hogy legyen session-ünk, a session_start eljárást kell meghívnunk.
Ez létrehozza a session-t, generál egy azonosítót, és beállítja a válasz üzenetben a megfelelő sütit.
Amennyiben már létezik egy session id (megkapta a szerver sütiként), akkor betölti a hozzá tartozó adatokat.
Ebben az esetben is fontos, hogy ne legyen semmilyen kimenet a session létrehozása előtt, mert akkor nem tudja beállítani a fejlécet.
A session kiválóan alkalmas bejelentkezési állapot tárolására. Például beállíthatjuk a felhasználó azonosítóját, mely ezután minden kérés során elérhető lesz.
A session megszűnése esetén a felhasználó kijelentkezett állapotba kerül.
A session_unset és session_destroy eljárásokkal kiüríthetjük, és törölhetjük a sessiont, ami alkalmas a felhasználó manuális kijelentkeztetésére.

Feladat

Bővítsd ki a bejelentkezős űrlap logikáját, hogy egy fájlból beolvasott felhasználó lista alapján validálja az űrlapot, és írjon ki hibát, ha nem található a felhasználónév.

Feladat

A regisztrációt követően mentsd el a fájlba a felhasználó adatait.

Feladat

A sikeres bejelentkezést követően tárold el az állapotot session segítségével.
Bejelentkezett felhasználó esetén rejtsd el a bejelentkezési űrlapot, írd ki helyette a felhasználó adatait, és jeleníts meg egy kijelentkező gombot.