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 {
// логин ёки паролни нотўғри киритди
}
}
?>
Энди биз сайтнинг istalgan саҳифасида фойдаланувчи авторизациядан ўтганми ёки йўқлигини шу тарзда текширишимиз мумкин:
<?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
саҳифаси мавжуд. Ушбу саҳифанинг бир қисми
ҳамма фойдаланувчилар учун очиқ, иккинчи қисми
эса фақат авторизациядан ўтганлар учун очиқ
бўлсин.
Кодингизни шундай модификация қилингки, муваффақиятли авторизациядан сўнг сессияга фойдаланувчининг логини ҳам ёзилсин.
Сайтнинг istalgan саҳифасига кирганда, авторизациядан ўтган фойдаланувчи ўз логинини кўрсин, авторизациядан ўтмаган фойдаланувчи эса авторизация саҳифасига havolaни кўрсин.