Авторизација преку сесија во 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

Направете така што при влегување на која било страница на веб-страницата, авторизираниот корисник да го гледа своето корисничко име, а неавторизираниот - линк кон страницата за авторизација.