Autorisierung über Session in PHP
Unsere Autorisierung sollte so funktionieren: Ein Benutzer,
der sich auf der Website autorisieren möchte, geht
auf die Seite login.php, gibt die korrekten
Benutzernamen und Passwort ein und durchläuft anschließend
die Seiten der Website bereits als autorisierter Benutzer.
Damit andere Seiten der Website wissen, dass unser Benutzer autorisiert ist, müssen wir einen Vermerk darüber in der Session speichern.
Momentan ist unsere Autorisierung noch nicht ganz funktionsfähig, da wir die Session noch nicht eingebunden haben und andere Seiten der Website nicht erkennen können, ob der Benutzer autorisiert ist oder nicht.
Wir speichern den Vermerk über die Autorisierung in der Session-Variable
$_SESSION['auth'] - wenn dort
true steht, dann ist der Benutzer autorisiert,
und wenn null - dann nicht autorisiert.
Lassen Sie uns die entsprechende Änderung in unseren Code einfügen:
<?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 {
// falscher Benutzername oder Passwort
}
}
?>
Nun können wir auf jeder Seite der Website überprüfen, ob der Benutzer autorisiert ist oder nicht, auf folgende Weise:
<?php
if (!empty($_SESSION['auth'])) {
}
?>
Man kann den Text einer beliebigen Seite komplett für nicht autorisierte Benutzer sperren:
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>Text nur für autorisierte Benutzer</p>
</body>
</html>
<?php else: ?>
<p>Bitte autorisieren Sie sich</p>
<?php endif; ?>
Man kann auch nur einen Teil der Seite sperren:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>Text für alle Benutzer</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'Text nur für autorisierte Benutzer';
}
?>
<p>Text für alle Benutzer</p>
</body>
</html>
Angenommen, auf unserer Website gibt es neben der Seite login.php
auch noch die Seiten 1.php, 2.php
und 3.php. Sorgen Sie dafür, dass auf diese
Seiten nur autorisierte Benutzer zugreifen können.
Angenommen, auf unserer Website gibt es noch eine Seite
index.php. Sorgen Sie dafür, dass ein Teil
dieser Seite für alle Benutzer offen ist,
und ein Teil - nur für autorisierte.
Modifizieren Sie Ihren Code so, dass bei erfolgreicher Autorisierung auch der Benutzername des Benutzers in der Session gespeichert wird.
Sorgen Sie dafür, dass beim Aufruf einer beliebigen Seite der Website ein autorisierter Benutzer seinen Benutzernamen sieht, und ein nicht autorisierter - einen Link zur Autorisierungsseite.