Načrtovanje in razvoj spletnih aplikacij

Odjava iz zaščitenih strani

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:

  1. zaženemo sejo,
  2. počistimo vse podatke iz seje,
  3. sejo uničimo,
  4. 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.

Primer: aplikacija – 15_logout.php

Navodila za izdelavo odjave

  1. Najprej zaženemo sejo s funkcijo session_start().
  2. Počistimo vse podatke, povezane s prijavo uporabnika.
  3. Po potrebi odstranimo vse preostale podatke iz seje.
  4. Sejo uničimo s funkcijo session_destroy().
  5. Uporabnika preusmerimo na prijavno ali začetno stran aplikacije.
  6. 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.