PHP-də sessiya vasitəsilə avtorizasiya
Bizim avtorizasiyamız belə işləməlidir: saytda daxil olmaq istəyən istifadəçi
login.php səhifəsinə daxil olur,
düzgün login və parol daxil edir və daha sonra saytın səhifələri arasında
artıq avtorizasiya olunmuş halda gəzir.
Saytın digər səhifələrinin istifadəçinin avtorizasiya olunduğunu bilməsi üçün biz bunu sessiyada qeyd etməliyik.
Hələlik bizim avtorizasiyamız tam işlək deyil, çünki sessiyanı hələ əlavə etməmişik və saytın digər səhifələri istifadəçinin avtorizasiya olunub-olunmadığını başa düşə bilmir.
Avtorizasiya qeydini $_SESSION['auth'] sessiya dəyişənində
saxlayacağıq - əgər ora true yazılıbsa, deməli istifadəçi avtorizasiya olunub,
əgər null - deməli avtorizasiya olunmayıb.
Gəlin kodumuzda müvafiq dəyişikliyi edək:
<?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 {
// login və ya parol səhv daxil edilib
}
}
?>
İndi saytın istənilən səhifəsində istifadəçinin avtorizasiya olunub-olunmadığını belə yoxlaya bilərik:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Müəyyən bir səhifənin mətnini tamamilə avtorizasiya olunmamış istifadəçilər üçün bağlamaq olar:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>yalnız avtorizasiya olunmuş istifadəçi üçün mətn</p>
</body>
</html>
<?php else: ?>
<p>zəhmət olmasa, daxil olun</p>
<?php endif; ?>
Səhifənin yalnız bir hissəsini bağlamaq olar:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>istənilən istifadəçi üçün mətn</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'yalnız avtorizasiya olunmuş istifadəçi üçün mətn';
}
?>
<p>istənilən istifadəçi üçün mətn</p>
</body>
</html>
Tutaq ki, saytımızda login.php səhifəsindən əlavə,
həmçinin 1.php, 2.php
və 3.php səhifələri var. Elə edin ki, bu
səhifələrə yalnız avtorizasiya olunmuş istifadəçi daxil ola bilsin.
Tutaq ki, saytımızda həmçinin index.php səhifəsi var. Elə edin ki,
bu səhifənin bir hissəsi bütün istifadəçilər üçün açıq olsun,
digər hissəsi isə - yalnız avtorizasiya olunmuşlar üçün.
Kodunuzu elə dəyişin ki, uğurlu avtorizasiya zamanı sessiyaya istifadəçinin logini də yazılsın.
Elə edin ki, saytın istənilən səhifəsinə daxil olan zaman avtorizasiya olunmuş istifadəçi öz loginini görsün, avtorizasiya olunmamış istifadəçi isə avtorizasiya səhifəsinə keçid görsün.