Formation PUB010 : PHP, 2025 L'authentification avec PHP

48.7 Permettre à un usager de se déconnecter


Il existe plusieurs techniques permettant de déconnecter un usager d'un site Web. En voici une qui fonctionne bien.

Sous le mot de bienvenue, ajouter un lien avec un texte du genre « Se déconnecter ». Le lien mènera vers une autre page Web. Un bon nom pour cette page serait deconnecter.php.

L'action de se déconnecter consiste à détruire la session. Pour s'assurer que la session est bien détruite peu importe les configurations du serveur PHP, nous prendrons une précaution supplémentaire : avant de détruire la session, nous détruirons la variable de session qui indique que l'usager est authentifié.

La page qui contient ce code ne fera aucun affichage. Elle mettra fin à l'authentification puis affichera une autre page du site Web.

Voici un extrait de code pour mettre fin à l'authentification.

Attention : pour que le code fonctionne, vous devez absolument activer les variables de session.

PHP
if (isset($_SESSION['code_usager'])) {
    unset($_SESSION['code_usager']);   // détruit la variable de session
}

session_destroy();

header("Location: chemin/page.php");   // renvoie vers une autre page

Une fois l'authentification détruite, la fonction header("Location:...") renvoie à une autre page. Une technique simple consiste à réafficher la page d'accueil du site lorsque l'usager n'est plus authentifié. page.php pourrait donc être changé pour index.php.

Une meilleure solution consisterait à réafficher la page sur laquelle l'usager était lorsqu'il a demandé à se déconnecter. Pour connaître l'URL de cette page, on peut utiliser la variable $_SERVER['HTTP_REFERER']. Malheureusement, cette variable reste parfois vide alors on ne peut pas s'y fier (cette lacune est clairement documentée).

Pour nous assurer de pouvoir retrouver l'URL de cette page, il est possible d'enregistrer l'URL complet de la page dans une variable de session dès qu'une page est affichée. Cette variable de session sera différente de celle qui ne contient que le nom de la page. La balise header("Location:...")  pourra alors utiliser cette variable pour réafficher la page voulue, incluant le chemin permettant d'y accéder.

Pour plus d'information

« header ». php.net. http://php.net/manual/fr/function.header.php

« Quelques petites choses à savoir sur les sessions ». PHP débutant. http://www.phpdebutant.org/article69.php

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre