Autentisering via session i PHP

Vår autentisering ska fungera så här: en användare, som vill logga in på webbplatsen, går till sidan login.php, anger rätt användarnamn och lösenord och sedan navigerar på webbplatsens sidor redan inloggad.

För att andra sidor på webbplatsen ska veta att vår användare är inloggad måste vi lagra en markering om detta i sessionen.

För tillfället är vår autentisering inte helt funktionell, eftersom vi ännu inte har anslutit sessionen och andra sidor på webbplatsen inte kan förstå om användaren är inloggad eller inte.

Vi kommer att lagra markeringen om autentisering i sessionsvariabeln $_SESSION['auth'] - om true är skrivet där, så är användaren inloggad, och om null - så är hen inte inloggad.

Låt oss göra motsvarande ändring i vår 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 {
      // fel användarnamn eller lösenord
    }
  }
?>

Nu på vilken sida som helst på webbplatsen kan vi kontrollera om användaren är inloggad eller inte, på detta sätt:

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

Man kan stänga av texten på en sida helt för icke-inloggade användare:

html<?php if (!empty($_SESSION['auth'])): ?>
  <!DOCTYPE html>
  <html>
    <head>
      
    </head>
    <body>
      <p>text endast för inloggade användare</p>
    </body>
  </html>
<?php else: ?>
  <p>vänligen logga in</p>
<?php endif; ?>

Man kan stänga av endast en del av sidan:

html<!DOCTYPE html>
<html>
  <head>
    
  </head>
  <body>
    <p>text för alla användare</p>
    <?php
      if (!empty($_SESSION['auth'])) {
        echo 'text endast för inloggade användare';
      }
    ?>
    <p>text för alla användare</p>
  </body>
</html>
Задание 1

Antag att på vår webbplats, förutom sidan login.php, finns även sidorna 1.php, 2.php och 3.php. Gör så att endast inloggade användare har tillgång till dessa sidor.

Задание 2

Antag att på vår webbplats finns ytterligare en sida index.php. Gör så att en del av denna sida är öppen för alla användare, och en del - endast för inloggade.

Задание 3

Modifiera din kod så att vid lyckad autentisering så sparas även användarens användarnamn i sessionen.

Задание 4

Gör så att när man besöker vilken sida som helst på webbplatsen, så ser den inloggade användaren sitt användarnamn, och den utloggade - en länk till inloggningssidan.