Magtiging deur Sessie in PHP

Ons magtiging moet so werk: 'n gebruiker wat op die webwerf wil magtig, gaan na die bladsy login.php, voer die korrekte gebruikersnaam en wagwoord in en beweeg dan deur die webwerf se bladsye as gemagtig.

Sodat ander bladsye van die webwerf weet dat ons gebruiker gemagtig is, moet ons 'n aanduiding hiervan in die sessie stoor.

Tans is ons magtiging nie heeltemal werkend nie, aangesien ons die sessie nog nie gekoppel het nie en ander webwerf-bladsye nie kan verstaan of die gebruiker gemagtig is of nie.

Ons sal die magtigingsaanduiding in die sessieveranderlike $_SESSION['auth'] stoor - as daar true geskryf is, is die gebruiker gemagtig, en as daar null is - dan is hy nie gemagtig nie.

Kom ons maak die ooreenstemmende wysiging in ons kode:

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 {
      // verkeerde gebruikersnaam of wagwoord ingevoer
    }
  }
?>

Nou kan ons op enige bladsy van die webwerf nagaan of die gebruiker gemagtig is of nie, op hierdie manier:

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

Jy kan die teks van 'n bladsy heeltemal toegesluit maak vir 'n ongemagtigde gebruiker:

html<?php if (!empty($_SESSION['auth'])): ?>
  <!DOCTYPE html>
  <html>
    <head>
      
    </head>
    <body>
      <p>teks slegs vir gemagtigde gebruiker</p>
    </body>
  </html>
<?php else: ?>
  <p>magtig asseblief</p>
<?php endif; ?>

Jy kan slegs 'n gedeelte van die bladsy toemaak:

html<!DOCTYPE html>
<html>
  <head>
    
  </head>
  <body>
    <p>teks vir enige gebruiker</p>
    <?php
      if (!empty($_SESSION['auth'])) {
        echo 'teks slegs vir gemagtigde gebruiker';
      }
    ?>
    <p>teks vir enige gebruiker</p>
  </body>
</html>
Задание 1

Veronderstel op ons webwerf, behalwe die bladsy login.php, is daar ook bladsye 1.php, 2.php en 3.php. Maak dit so dat slegs gemagtigde gebruikers toegang tot hierdie bladsye kan kry.

Задание 2

Veronderstel op ons webwerf is daar ook 'n bladsy index.php. Maak dit so dat 'n deel van hierdie bladsy oop is vir alle gebruikers, en 'n deel - slegs vir gemagtigdes.

Задание 3

Wysig jou kode sodat met suksesvolle magtiging die gebruiker se gebruikersnaam ook in die sessie geskryf word.

Задание 4

Maak dit so dat wanneer 'n gebruiker na enige bladsy van die webwerf gaan, 'n gemagtigde gebruiker sy gebruikersnaam sien, en 'n ongemagtigde gebruiker - 'n skakel na die magtigingsbladsy.