Autorizace pomocí session v PHP
Naše autorizace by měla fungovat takto: uživatel,
který se chce na webu autorizovat, přijde
na stránku login.php, zadá správné
přihlašovací jméno a heslo a poté již chodí po stránkách
webu jako autorizovaný.
Aby ostatní stránky webu věděly, že je náš uživatel autorizován, musíme v session uchovávat poznámku o tom.
Zatím naše autorizace není zcela funkční, protože jsme session ještě nepřipojili a ostatní stránky webu nemohou zjistit, zda je uživatel autorizován nebo ne.
Poznámku o autorizaci budeme uchovávat v proměnné
session $_SESSION['auth'] - pokud je tam
zapsáno true, pak je uživatel autorizován,
a pokud null - pak není autorizován.
Pojďme provést odpovídající úpravu v našem kódu:
<?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 {
// nesprávně zadal přihlašovací jméno nebo heslo
}
}
?>
Nyní na jakékoli stránce webu můžeme zkontrolovat, zda je uživatel autorizován nebo ne, například takto:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Lze uzavřít text nějaké stránky celý pro neautorizovaného uživatele:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>text pouze pro autorizovaného uživatele</p>
</body>
</html>
<?php else: ?>
<p>prosím, autorizujte se</p>
<?php endif; ?>
Lze uzavřít pouze část stránky:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>text pro jakéhokoli uživatele</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'text pouze pro autorizovaného uživatele';
}
?>
<p>text pro jakéhokoli uživatele</p>
</body>
</html>
Nechť na našem webu, kromě stránky login.php,
jsou ještě stránky 1.php, 2.php
a 3.php. Zařiďte, aby k těmto
stránkám měl přístup pouze autorizovaný
uživatel.
Nechť na našem webu je ještě stránka
index.php. Zařiďte, aby část
této stránky byla otevřena pro všechny uživatele,
a část - pouze pro autorizované.
Upravte svůj kód tak, aby při úspěšné autorizaci se do session zapsalo také přihlašovací jméno uživatele.
Zařiďte, aby při příchodu na jakoukoli stránku webu, autorizovaný uživatel viděl své přihlašovací jméno, a neautorizovaný - odkaz na stránku autorizace.