- De nombreuses ressources web sont soumises à un contrôle d'accès
- Une solution consiste à associer l'accessibilité de la ressource à une session
- Toute ressource soumise à un contrôle d'accès nécessite de disposer d'une variable de session valide
- L'attribution de cette variable de session est soumise à la validation d'un identifiant/mot de passe
- Une fois la variable activée la ressource est accessible par le client.
- Exemple de fonction vérifiant si l'accès a été autorisé :
// la session doit avoit été activée avant son appel !
function isAuthorizedAccess(): bool {
return isset($_SESSION['access']) && $_SESSION['access'] === 'verified';
}
- Exemple de contrôle d'accès à la ressource :
if (! isAuthorizedAccess()) {
// mémorisation de la destination dans une variable de session
$_SESSION['destination'] = $_SERVER['PHP_SELF'];
header('HTTP/1.1 303 See Other');
header('Location: login.php'); // renvoi au portail de connexion
}
else {
/* accès à la ressource demandée */
}
- Script login.php
function getFormAccess(): string {
$form = '<h2>Contrôle d\'accès</h2>
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<fieldset><legend>login</legend>
<input type="text" name="login" /></fieldset>
<fieldset><legend>password</legend>
<input type="password" name="password" /></fieldset>
<button name="action" value="controler">Valider</button></form>';
return $form;
}
if (isset($_REQUEST['login']) && isset($_REQUEST['password'])
&& isValid($_REQUEST['login'],$_REQUEST['password'])) {
$_SESSION['access'] = 'verified';
// mémorisation du login dans la session si nécessaire
// redirection vers la source ayant demandé le contrôle d'accès
header('HTTP/1.1 303 See Other');
header('Location: '.$_SESSION['destination']);
}
else {
echo getDebutHTML().getFormAcces().getFinHTML();
}