J'ai créé une page de connexion simple basée sur les sessions.
session_start();
et ajouté une page de déconnexion qui contient cette
session_destroy();
Maintenant, lorsque je ferme le navigateur/la page et que je le rouvre, les valeurs de la session sont toujours présentes.
Je veux savoir comment détruire complètement la session à la fermeture de la page/du navigateur.
si tu utilises:
session_set_cookie_params(0);
session_start();
Votre cookie de session sera détruit lorsque le navigateur sera fermé ... ainsi votre session sera bonne jusqu'à ce qu'ils ferment le navigateur. C'EST À DIRE. Vous vous connectez et vous êtes connecté, vous fermez le navigateur, vous le rouvrez, vous retournez sur le site et vous ne serez pas connecté.
Vous ne pourrez détecter que si la fenêtre du navigateur a été fermée à l'aide de javascript. Vous pourrez alors éventuellement déclencher une demande Ajax afin d'effectuer une action de déconnexion.
Si la session existe, déconnectez-vous en détruisant la session et en redirigeant l'utilisateur vers la page d'accueil. Un cookie temporaire a été utilisé pour stocker l'identité de la session. Ce cookie est également détruit.
<?php
// This is the logout page for the site.
session_start();//access the current session.
//if no session variable then redirect the user
if (!isset($_SESSION['user_id'])) {
header("location:index.php");
exit();
}else{ //cancel the session
$_SESSION = array(); // Destroy the variables
session_destroy(); // Destroy the session
setcookie('PHPSESSID', ", time()-3600,'/', ", 0, 0);//Destroy the cookie
header("location:index.php");
exit();
}
?>
Le serveur ne peut pas détecter les navigateurs ou les onglets fermés, vous pouvez utiliser Javascript ou Ajax mais je suis désolé, je ne suis pas au courant.
Ma suggestion est d'utiliser Session Timeout, donc la session sera détruite s'il n'y a aucune action de l'utilisateur. Ceci est un exemple :
// destroy every 2 minutes
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 120)) {
// last request was more than 2 minutes ago
session_destroy(); // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
// end of code
J'espère que cela vous aidera