Аўтарызацыя праз сесію на PHP

Наша аўтарызацыя павінна працаваць так: карыстальнік, які хоча аўтарызавацца на сайце, заходзіць на старонку login.php, убівае правільныя лагін і пароль і далей ходзіць па старонках сайта ўжо будучы аўтарызаваным.

Каб іншыя старонкі сайта ведалі пра тое, што наш карыстальнік аўтарызаваны, мы павінны захоўваць у сесіі паметку пра гэта.

Пакуль наша аўтарызацыя не зусім працоўная, бо сесію мы яшчэ не падключылі і іншыя старонкі сайта не могуць зразумець, аўтарызаваны карыстальнік ці не.

Будзем захоўваць паметку пра аўтарызацыю ў зменнай сесіі $_SESSION['auth'] - калі там запісана true, то карыстальнік аўтарызаваны, а калі null - то не аўтарызаваны.

Давайце ўнесем адпаведную праўку ў наш код:

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 {
      // няправільна ўвёў лагін ці пароль
    }
  }
?>

Цяпер на любой старонцы сайта мы можам праверыць, аўтарызаваны карыстальнік ці не, вось такім чынам:

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

Можна закрыць тэкст якой-небудзь старонкі цалкам для неаўтарызаванага карыстальніка:

html<?php if (!empty($_SESSION['auth'])): ?>
  <!DOCTYPE html>
  <html>
    <head>
      
    </head>
    <body>
      <p>тэкст толькі для аўтарызаванага карыстальніка</p>
    </body>
  </html>
<?php else: ?>
  <p>калі ласка, аўтарызуйцеся</p>
<?php endif; ?>

Можна закрыць толькі частку старонкі:

html<!DOCTYPE html>
<html>
  <head>
    
  </head>
  <body>
    <p>тэкст для любога карыстальніка</p>
    <?php
      if (!empty($_SESSION['auth'])) {
        echo 'тэкст толькі для аўтарызаванага карыстальніка';
      }
    ?>
    <p>тэкст для любога карыстальніка</p>
  </body>
</html>
Задание 1

Хай на нашым сайце, акрамя старонкі login.php, ёсць яшчэ і старонкі 1.php, 2.php і 3.php. Зрабіце так, каб да гэтых старонак мог атрымаць доступ толькі аўтарызаваны карыстальнік.

Задание 2

Хай на нашым сайце ёсць яшчэ і старонка index.php. Зрабіце так, каб частка гэтай старонкі была адкрыта для ўсіх карыстальнікаў, а частка - толькі для аўтарызаваных.

Задание 3

Мадыфікуйце ваш код так, каб пры паспяховай аўтарызацыі ў сесію запісваўся таксама лагін карыстальніка.

Задание 4

Зрабіце так, каб пры заходзе на любую старонку сайта, аўтарызаваны карыстальнік бачыў свой лагін, а не аўтарызаваны - спасылку на старонку аўтарызацыі.