Autorizacija kroz sesiju u PHP

Naša autorizacija treba da funkcioniše ovako: korisnik, koji želi da se autorizuje na sajtu, ode na stranicu login.php, unese tačne korisničko ime i lozinku i zatim pregleda stranice sajta već budući autorizovan.

Da bi druge stranice sajta znale o tome, da je naš korisnik autorizovan, moramo čuvati u sesiji oznaku o tome.

Za sada naša autorizacija nije sasvim radna, pošto sesiju još nismo povezali i druge stranice sajta ne mogu da razumeju, da li je korisnik autorizovan ili ne.

Čuvaćemo oznaku o autorizaciji u promenljivoj sesije $_SESSION['auth'] - ako je tamo upisano true, onda je korisnik autorizovan, a ako je null - onda nije autorizovan.

Hajde da unesemo odgovarajuću ispravku u naš kod:

html<?php
  session_start();
  
  if (!empty($_POST['password']) and !empty($_POST['login'])) {
    $login = $_POST['login'];
    $password = $_POST['password'];
    
    $query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
    $res = mysqli_query($link, $query);
    $user = mysqli_fetch_assoc($res);
    
    if (!empty($user)) {
      $_SESSION['auth'] = true;
    } else {
      // pogrešno je uneo korisničko ime ili lozinku
    }
  }
?>

Sada na bilo kojoj stranici sajta možemo proveriti, da li je korisnik autorizovan ili ne, na ovaj način:

html<?php
  if (!empty($_SESSION['auth'])) {
    
  }
?>

Može se zatvoriti tekst neke stranice u potpunosti za neautorizovanog korisnika:

html<?php if (!empty($_SESSION['auth'])): ?>
  <!DOCTYPE html>
  <html>
    <head>
      
    </head>
    <body>
      <p>tekst samo za autorizovanog korisnika</p>
    </body>
  </html>
<?php else: ?>
  <p>molim vas, autorizujte se</p>
<?php endif; ?>

Može se zatvoriti samo deo stranice:

html<!DOCTYPE html>
<html>
  <head>
    
  </head>
  <body>
    <p>tekst za bilo kog korisnika</p>
    <?php
      if (!empty($_SESSION['auth'])) {
        echo 'tekst samo za autorizovanog korisnika';
      }
    ?>
    <p>tekst za bilo kog korisnika</p>
  </body>
</html>
Задание 1

Neka na našem sajtu, osim stranice login.php, ima još i stranice 1.php, 2.php i 3.php. Uredite tako da ovim stranicama može pristupiti samo autorizovani korisnik.

Задание 2

Neka na našem sajtu ima još i stranica index.php. Uredite tako da deo ove stranice bude otvoren za sve korisnike, a deo - samo za autorizovane.

Задание 3

Izmenite vaš kod tako da pri uspešnoj autorizaciji u sesiju se upisuje takođe korisničko ime korisnika.

Задание 4

Uredite tako da pri ulasku na bilo koju stranicu sajta, autorizovani korisnik vidi svoje korisničko ime, a neautorizovani - link na stranicu za autorizaciju.