Аўтарызацыя праз сесію на 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. Зрабіце так, каб частка
гэтай старонкі была адкрыта для ўсіх карыстальнікаў,
а частка - толькі для аўтарызаваных.
Мадыфікуйце ваш код так, каб пры паспяховай аўтарызацыі ў сесію запісваўся таксама лагін карыстальніка.
Зрабіце так, каб пры заходзе на любую старонку сайта, аўтарызаваны карыстальнік бачыў свой лагін, а не аўтарызаваны - спасылку на старонку аўтарызацыі.