Авторизација преку сесија во PHP
Нашата авторизација треба да работи вака: корисникот,
кој сака да се авторизира на веб-страницата, влегува
на страницата login.php, внесува точни
корисничко име и лозинка и потоа се движи по страниците
на веб-страницата веќе како авторизиран.
За другите страници на веб-страницата да знаат дека нашиот корисник е авторизиран, мораме да чуваме во сесијата ознака за ова.
Засега нашата авторизација не е сосема работна, бидејќи сесијата сè уште не сме ја поврзале и другите страници на веб-страницата не можат да сфатат, дали е авторизиран корисникот или не.
Ќе чуваме ознака за авторизацијата во променливата
на сесијата $_SESSION['auth'] - ако таму
е запишано true, тогаш корисникот е авторизиран,
а ако null - тогаш не е авторизиран.
Ајде да внесеме соодветна поправка во нашиот код:
<?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 {
// погрешно внесе корисничко име или лозинка
}
}
?>
Сега на која било страница на веб-страницата можеме да провериме, дали корисникот е авторизиран или не, на ваков начин:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Може да се затвори текстот на некоја страница целосно за неавторизиран корисник:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>текст само за авторизиран корисник</p>
</body>
</html>
<?php else: ?>
<p>ве молиме, авторизирајте се</p>
<?php endif; ?>
Може да се затвори само дел од страницата:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>текст за кој било корисник</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'текст само за авторизиран корисник';
}
?>
<p>текст за кој било корисник</p>
</body>
</html>
Нека на нашата веб-страница, освен страницата login.php,
има уште и страници 1.php, 2.php
и 3.php. Направете така што на овие
страници ќе може да пристапи само авторизиран
корисник.
Нека на нашата веб-страница има уште и страница
index.php. Направете така што дел
од оваа страница да биде отворен за сите корисници,
а дел - само за авторизираните.
Модифицирајте го вашиот код така што при успешна авторизација во сесијата да се запишува и корисничкото име на корисникот.
Направете така што при влегување на која било страница на веб-страницата, авторизираниот корисник да го гледа своето корисничко име, а неавторизираниот - линк кон страницата за авторизација.