Autorizácia ceze session v PHP
Naša autorizácia by mala fungovať tak: používateľ,
ktorý sa chce autorizovať na stránke, príde
na stránku login.php, zadá správne
prihlasovacie meno a heslo a potom chodí po stránkach
webu už ako autorizovaný.
Aby ostatné stránky webu vedeli, že náš používateľ je autorizovaný, musíme v session uložiť poznámku o tom.
Zatiaľ naša autorizácia nie je celkom funkčná, pretože session sme ešte nepripojili a ostatné stránky webu nemôžu zistiť, či je používateľ autorizovaný alebo nie.
Budeme ukladať poznámku o autorizácii v premennej
session $_SESSION['auth'] - ak je tam
zapísané true, potom je používateľ autorizovaný,
a ak null - tak nie je autorizovaný.
Poďme vykonať príslušnú úpravu v našom kóde:
<?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 {
// zle zadané prihlasovacie meno alebo heslo
}
}
?>
Teraz na akejkoľvek stránke webu môžeme skontrolovať, či je používateľ autorizovaný alebo nie, takýmto spôsobom:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Môžeme uzavrieť text nejakej stránky celý pre neautorizovaného používateľa:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>text len pre autorizovaného používateľa</p>
</body>
</html>
<?php else: ?>
<p>prosím, autorizujte sa</p>
<?php endif; ?>
Môžeme uzavrieť len časť stránky:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>text pre akéhokoľvek používateľa</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'text len pre autorizovaného používateľa';
}
?>
<p>text pre akéhokoľvek používateľa</p>
</body>
</html>
Nech na našom webe, okrem stránky login.php,
sú ešte stránky 1.php, 2.php
a 3.php. Zabezpečte, aby k týmto
stránkam mal prístup len autorizovaný
používateľ.
Nech na našom webe je ešte stránka
index.php. Zabezpečte, aby časť
tejto stránky bola otvorená pre všetkých používateľov,
a časť - len pre autorizovaných.
Upravte váš kód tak, aby pri úspešnej autorizácii sa do session zapísalo aj prihlasovacie meno používateľa.
Zabezpečte, aby pri vstupe na akúkoľvek stránku webu, autorizovaný používateľ videl svoje prihlasovacie meno, a neautorizovaný - odkaz na stránku autorizácie.