Autorisatie via sessie in PHP
Onze autorisatie moet als volgt werken: een gebruiker,
die zich op de website wil autoriseren, gaat
naar de pagina login.php, voert de juiste
login en wachtwoord in en bezoekt daarna de pagina's
van de website al geautoriseerd.
Zodat andere pagina's van de website weten dat onze gebruiker geautoriseerd is, moeten we een markering hiervan in de sessie opslaan.
Momenteel is onze autorisatie nog niet helemaal werkend, omdat we de sessie nog niet hebben aangesloten en andere pagina's van de website niet kunnen begrijpen of de gebruiker geautoriseerd is of niet.
We slaan de autorisatiemarkering op in de sessievariabele
$_SESSION['auth'] - als daar
true staat, dan is de gebruiker geautoriseerd,
en als het null is - dan niet geautoriseerd.
Laten we de bijbehorende aanpassing in onze code aanbrengen:
<?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 {
// onjuiste login of wachtwoord ingevoerd
}
}
?>
Nu kunnen we op elke pagina van de website controleren, of de gebruiker geautoriseerd is of niet, op deze manier:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Je kunt de tekst van een willekeurige pagina volledig afsluiten voor een niet-geautoriseerde gebruiker:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>tekst alleen voor geautoriseerde gebruiker</p>
</body>
</html>
<?php else: ?>
<p>gelieve te autoriseren</p>
<?php endif; ?>
Je kunt alleen een deel van de pagina afsluiten:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>tekst voor elke gebruiker</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'tekst alleen voor geautoriseerde gebruiker';
}
?>
<p>tekst voor elke gebruiker</p>
</body>
</html>
Stel dat op onze website, behalve de pagina login.php,
er ook pagina's 1.php, 2.php
en 3.php zijn. Zorg ervoor dat alleen geautoriseerde
gebruikers toegang hebben tot deze pagina's.
Stel dat op onze website ook een pagina
index.php is. Zorg ervoor dat een deel
van deze pagina openstaat voor alle gebruikers,
en een deel - alleen voor geautoriseerden.
Pas je code zo aan dat bij succesvolle autorisatie ook de login van de gebruiker in de sessie wordt opgeslagen.
Zorg ervoor dat bij het bezoeken van elke pagina van de website, de geautoriseerde gebruiker zijn login ziet, en de niet-geautoriseerde - een link naar de autorisatiepagina.