Autorisation via session en PHP
Notre autorisation doit fonctionner ainsi : l'utilisateur,
qui souhaite s'autoriser sur le site, se rend
sur la page login.php, saisit les bons
identifiant et mot de passe et ensuite navigue sur les pages
du site en étant déjà autorisé.
Pour que les autres pages du site sachent que notre utilisateur est autorisé, nous devons stocker dans la session une marque à ce sujet.
Pour l'instant, notre autorisation n'est pas tout à fait fonctionnelle, car nous n'avons pas encore intégré la session et les autres pages du site ne peuvent pas savoir si l'utilisateur est autorisé ou non.
Nous stockerons la marque d'autorisation dans la variable
de session $_SESSION['auth'] - si
true y est écrit, alors l'utilisateur est autorisé,
et si c'est null - alors il ne l'est pas.
Apportons la modification correspondante à notre code :
<?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 {
// identifiant ou mot de passe incorrect
}
}
?>
Désormais, sur n'importe quelle page du site, nous pouvons vérifier si l'utilisateur est autorisé ou non, de cette manière :
<?php
if (!empty($_SESSION['auth'])) {
}
?>
On peut restreindre l'accès au texte d'une page entièrement pour un utilisateur non autorisé :
<?php if (!empty($_SESSION['auth'])): ?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>texte uniquement pour l'utilisateur autorisé</p>
</body>
</html>
<?php else: ?>
<p>veuillez vous autoriser</p>
<?php endif; ?>
On peut ne restreindre qu'une partie de la page :
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>texte pour tout utilisateur</p>
<?php
if (!empty($_SESSION['auth'])) {
echo 'texte uniquement pour l'utilisateur autorisé';
}
?>
<p>texte pour tout utilisateur</p>
</body>
</html>
Supposons que sur notre site, en plus de la page login.php,
il y ait aussi les pages 1.php, 2.php
et 3.php. Faites en sorte que l'accès à ces
pages soit réservé uniquement à l'utilisateur autorisé.
Supposons que sur notre site il y ait aussi une page
index.php. Faites en sorte qu'une partie
de cette page soit ouverte à tous les utilisateurs,
et une partie - uniquement aux utilisateurs autorisés.
Modifiez votre code afin que lors d'une autorisation réussie, l'identifiant de l'utilisateur soit également enregistré dans la session.
Faites en sorte qu'en accédant à n'importe quelle page du site, l'utilisateur autorisé voie son identifiant, et que le non autorisé voie un lien vers la page d'autorisation.