Ауторизација преко сесије у 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. Направите тако да је део
ове странице отворен за све кориснике,
а део - само за ауторизоване.
Модификујте ваш код тако да при успешној ауторизацији у сесију буде уписан и корисничко име корисника.
Направите тако да при доласку на било коју страницу сајта, ауторизовани корисник види своје корисничко име, а неауторизовани - линк на страницу за ауторизацију.