Autorisation via session en PHP

Notre autorisation doit fonctionner ainsi : l'utilisateur, qui souhaite s'autoriser sur le site, se rend sur la page login.php, saisit les bons identifiant et mot de passe et ensuite navigue sur les pages du site en étant déjà autorisé.

Pour que les autres pages du site sachent que notre utilisateur est autorisé, nous devons stocker dans la session une marque à ce sujet.

Pour l'instant, notre autorisation n'est pas tout à fait fonctionnelle, car nous n'avons pas encore intégré la session et les autres pages du site ne peuvent pas savoir si l'utilisateur est autorisé ou non.

Nous stockerons la marque d'autorisation dans la variable de session $_SESSION['auth'] - si true y est écrit, alors l'utilisateur est autorisé, et si c'est null - alors il ne l'est pas.

Apportons la modification correspondante à notre code :

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 {
      // identifiant ou mot de passe incorrect
    }
  }
?>

Désormais, sur n'importe quelle page du site, nous pouvons vérifier si l'utilisateur est autorisé ou non, de cette manière :

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

On peut restreindre l'accès au texte d'une page entièrement pour un utilisateur non autorisé :

html<?php if (!empty($_SESSION['auth'])): ?>
  <!DOCTYPE html>
  <html>
    <head>
      
    </head>
    <body>
      <p>texte uniquement pour l'utilisateur autorisé</p>
    </body>
  </html>
<?php else: ?>
  <p>veuillez vous autoriser</p>
<?php endif; ?>

On peut ne restreindre qu'une partie de la page :

html<!DOCTYPE html>
<html>
  <head>
    
  </head>
  <body>
    <p>texte pour tout utilisateur</p>
    <?php
      if (!empty($_SESSION['auth'])) {
        echo 'texte uniquement pour l'utilisateur autorisé';
      }
    ?>
    <p>texte pour tout utilisateur</p>
  </body>
</html>
Задание 1

Supposons que sur notre site, en plus de la page login.php, il y ait aussi les pages 1.php, 2.php et 3.php. Faites en sorte que l'accès à ces pages soit réservé uniquement à l'utilisateur autorisé.

Задание 2

Supposons que sur notre site il y ait aussi une page index.php. Faites en sorte qu'une partie de cette page soit ouverte à tous les utilisateurs, et une partie - uniquement aux utilisateurs autorisés.

Задание 3

Modifiez votre code afin que lors d'une autorisation réussie, l'identifiant de l'utilisateur soit également enregistré dans la session.

Задание 4

Faites en sorte qu'en accédant à n'importe quelle page du site, l'utilisateur autorisé voie son identifiant, et que le non autorisé voie un lien vers la page d'autorisation.