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 беті де бар болсын.
Бұл беттің бір бөлігі барлық пайдаланушылар үшін ашық,
ал бір бөлігі тек авторизациядан өткендер үшін болатындай етіңіз.
Сіздің кодты сәйкес өзгертіңіз, сонда авторизация сәтті өткенде сессияда пайдаланушы логині де жазылады.
Сайттың кез келген бетіне кіргенде, авторизациядан өткен пайдаланушы өз логинін көретін, ал өтпеген пайдаланушы авторизация бетіне сілтемені көретіндей етіңіз.