PHP - pourquoi je ne peux pas me débarrasser de ce cookie d'identification de session?
Je suis en train de résoudre une fonction de déconnexion pour une application web. Lorsque vous êtes connecté, l'application a plusieurs cookies de son domaine. Voici l'actuelle procédure de fermeture de session:
- Vous cliquez sur un lien, qui vous envoie vers une page de déconnexion
- La page de déconnexion exécute une fonction qui s'appelle
session_destroy()
et aussi boucle par tous les cookies pour le domaine et définit leur date d'expiration dans le passé (voir code ci-dessous) - La page de déconnexion puis redirige vers une page de connexion, qui est directement HTML.
À la fin de ce processus, tous les autres témoins ne sont pas définis, mais la PHPSESSID
cookie est toujours là, a la même valeur, et est toujours à expiration à la fin de la session.
Ce qui me manque ici?
Voici la fonction de déconnexion je l'ai mentionné ci-dessus:
function log_out_current_user() {
//Destroy the session
if (isset($_SESSION)) {
session_destroy();
}
//Expire all of the user's cookies for this domain:
//give them a blank value and set them to expire
//in the past
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
//Explicitly unset this cookie - shouldn't be redundant,
//but it doesn't hurt to try
setcookie('PHPSESSID', '', time()-1000);
}
}
source d'informationauteur Nathan Long
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas de l'enlever avec les mêmes paramètres, comme il a été créé. Utilisation
session_get_cookie_params
pour obtenir ces. Pour être portable, vous devriez obtenir le nom du cookie viasession_name
. Voici un petit script pour faire ça: