Autorizácia ceze session v PHP

Naša autorizácia by mala fungovať tak: používateľ, ktorý sa chce autorizovať na stránke, príde na stránku login.php, zadá správne prihlasovacie meno a heslo a potom chodí po stránkach webu už ako autorizovaný.

Aby ostatné stránky webu vedeli, že náš používateľ je autorizovaný, musíme v session uložiť poznámku o tom.

Zatiaľ naša autorizácia nie je celkom funkčná, pretože session sme ešte nepripojili a ostatné stránky webu nemôžu zistiť, či je používateľ autorizovaný alebo nie.

Budeme ukladať poznámku o autorizácii v premennej session $_SESSION['auth'] - ak je tam zapísané true, potom je používateľ autorizovaný, a ak null - tak nie je autorizovaný.

Poďme vykonať príslušnú úpravu v našom kóde:

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 {
      // zle zadané prihlasovacie meno alebo heslo
    }
  }
?>

Teraz na akejkoľvek stránke webu môžeme skontrolovať, či je používateľ autorizovaný alebo nie, takýmto spôsobom:

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

Môžeme uzavrieť text nejakej stránky celý pre neautorizovaného používateľa:

html<?php if (!empty($_SESSION['auth'])): ?>
  <!DOCTYPE html>
  <html>
    <head>
      
    </head>
    <body>
      <p>text len pre autorizovaného používateľa</p>
    </body>
  </html>
<?php else: ?>
  <p>prosím, autorizujte sa</p>
<?php endif; ?>

Môžeme uzavrieť len časť stránky:

html<!DOCTYPE html>
<html>
  <head>
    
  </head>
  <body>
    <p>text pre akéhokoľvek používateľa</p>
    <?php
      if (!empty($_SESSION['auth'])) {
        echo 'text len pre autorizovaného používateľa';
      }
    ?>
    <p>text pre akéhokoľvek používateľa</p>
  </body>
</html>
Задание 1

Nech na našom webe, okrem stránky login.php, sú ešte stránky 1.php, 2.php a 3.php. Zabezpečte, aby k týmto stránkam mal prístup len autorizovaný používateľ.

Задание 2

Nech na našom webe je ešte stránka index.php. Zabezpečte, aby časť tejto stránky bola otvorená pre všetkých používateľov, a časť - len pre autorizovaných.

Задание 3

Upravte váš kód tak, aby pri úspešnej autorizácii sa do session zapísalo aj prihlasovacie meno používateľa.

Задание 4

Zabezpečte, aby pri vstupe na akúkoľvek stránku webu, autorizovaný používateľ videl svoje prihlasovacie meno, a neautorizovaný - odkaz na stránku autorizácie.