Իրականացնել նստաշրջանով նույնականացում 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

Ապահովեք, որ կայքի ցանկացած էջ այցելելիս, նույնականացված օգտատերը տեսնի իր մուտքանունը, իսկ ոչ նույնականացվածը` նույնականացման էջի հղում: