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