Odjava uporabnika pomeni, da v aplikaciji zaključimo njegovo prijavljeno sejo. S tem uporabniku onemogočimo nadaljnji dostop do zaščitenih strani, dokler se znova ne prijavi.
Odjava uporabnika iz aplikacije
Ko se uporabnik odjavi, moramo izbrisati vse pomembne podatke, ki jih je aplikacija shranila v sejo. Tako poskrbimo, da zaščiteni del aplikacije po odjavi ni več dostopen.
Pri odjavi običajno izvedemo naslednje korake:
- zaženemo sejo,
- počistimo vse podatke iz seje,
- sejo uničimo,
- uporabnika preusmerimo na prijavno ali začetno stran.
Odjava je pomembna predvsem pri aplikacijah, kjer uporabniki dostopajo do osebnih podatkov ali do administrativnega dela sistema.
Osnovni primer z mysqli
Pri odjavi sama podatkovna zbirka pogosto ni več potrebna, saj so podatki o prijavi običajno shranjeni v seji. Spodnji primer prikazuje klasičen postopek odjave uporabnika.
<?php
session_start();
// Počistimo vse podatke iz seje
session_unset();
// Sejo uničimo
session_destroy();
// Uporabnika preusmerimo na prijavno stran
header('Location: 15_login.php');
exit();
?>
Osnovni primer s PDO
Tudi če je bila prijava izvedena z uporabo PDO, je
sama odjava praviloma enaka. Pri odjavi namreč zaključimo sejo,
ne glede na to, s katerim vmesnikom smo dostopali do baze.
<?php
session_start();
// Počistimo podatke o prijavi
unset($_SESSION['user_id'], $_SESSION['logged_in']);
// Po želji odstranimo še vse preostale podatke iz seje
session_unset();
// Sejo uničimo
session_destroy();
// Preusmeritev na prijavo
header('Location: 15_login.php');
exit();
?>
Zakaj je odjava pomembna?
Odjava ni pomembna le zaradi uporabniške izkušnje, ampak tudi zaradi varnosti. Če uporabnik zapre aplikacijo brez odjave, lahko na istem računalniku ali napravi druga oseba še vedno dostopa do zaščitenih vsebin.
- po odjavi odstranimo podatke o prijavi iz seje,
- z uničenjem seje zmanjšamo možnost zlorabe,
- po odjavi uporabnik ne more več dostopati do zaščitenih strani,
- za ponovni dostop se mora znova prijaviti.
Pomembnosti pri odjavi uporabnika
- najprej moramo izvesti session_start(),
- nato odstranimo podatke iz $_SESSION,
- sejo zaključimo z session_destroy(),
- uporabnika po odjavi navadno preusmerimo na prijavno stran,
- zaščitene strani morajo po odjavi preverjati, ali seja še obstaja.
📘Aplikacija Knjige
V priloženi aplikaciji je odjava izvedena v datoteki
15_logout.php. Datoteka najprej zažene sejo z ukazom
session_start(), saj lahko podatke iz seje brišemo
le, če je seja odprta.
Nato aplikacija s funkcijo session_unset() počisti vse
podatke iz seje in z session_destroy() sejo dokončno
uniči. Tako po odjavi v aplikaciji ne ostanejo več podatki o prijavi
uporabnika.
Na koncu uporabnika preusmeri nazaj na prijavno stran 15_login.php. Tako je nadaljnji dostop do zaščitenih strani mogoč šele po novi prijavi.
Navodila za izdelavo odjave
- Najprej zaženemo sejo s funkcijo
session_start(). - Počistimo vse podatke, povezane s prijavo uporabnika.
- Po potrebi odstranimo vse preostale podatke iz seje.
- Sejo uničimo s funkcijo
session_destroy(). - Uporabnika preusmerimo na prijavno ali začetno stran aplikacije.
- Na zaščitenih straneh preverjamo, ali je uporabnik po odjavi še prijavljen.
Pri učenju je smiselno poznati oba pristopa:
- mysqli oziroma klasičen PHP pristop pri delu s sejo,
- PDO oziroma sodobnejši pristop pri prijavi, kjer je odjava še vedno vezana na sejo,
- aplikacijski pristop, kjer odjava varno zaključi uporabniško sejo in uporabnika vrne na prijavo.