Авторизация через сессию на 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

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