[PHP] Variable de session qui ne se réinitialise pas

Fermé
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 25 sept. 2014 à 16:23
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 25 sept. 2014 à 19:18
Bonjour à tous,

Je viens vers vous pour vous embêter avec une question pas très grave, mais qui titille ma curiosité !

J'ai fait une interface php à laquelle on se connecter avec login/mot de passe.
A la connexion, j'initialise la variable de session, et un cookie se crée si on a coché la case qui fait que.

La variable de session c'est $_SESSION['id_account']
(et le cookie s'appelle id_account, ce qui n'est pas très juste comme nom car il contient également le mot de passe crypté, mais on s'en moque c'est pas de lui dont je veux vous parler.)

Une fois connecté, on peut ouvrir une fenêtre popup. Le php de la popup vérifie si on est bien connecté avant d'afficher quoi que ce soit.

Donc si j'ouvre une popup, que je copie son url et que je la colle dans un autre navigateur (avec lequel je suis pas connecté) il m'envoie sur la page de connexion, ce qui est très bien.
Mais si je me déconnecte entre temps depuis mon 1er navigateur, et que je colle l'adresse dans celui-ci, et bien il affiche le contenu de la popup, comme si j'étais encore connecté !

Après vérification, le cookie est bien supprimé à la déconnexion, mais la variable de session est encore utilisée.

Voici le code pour se déconnecter :

        setcookie('id_account', '', time()+1,'/',$_SERVER['HTTP_HOST']);
$_SESSION=array();
session_destroy();
session_write_close();

Alors pourquoi le cookie est détruit mais la variable de session est restée ??

Comme je l'ai dit c'est pas bien grave car si la session est morte on ne peut pas voir le contenu, mais je trouve ça bizarre.

A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
25 sept. 2014 à 17:05
Salut,

Pour détruire la session il faut d'abord l'initialisée. Ajoute un session_start() au début de ton code de déconnexion.

Bonne journée
0
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
25 sept. 2014 à 19:18
Merci pour ta réponse !
J'ai déjà été confronté à ce genre de problème, du coup je mets toujours session_start() au début de tous mes fichiers PHP (avec 2 ou 3 autres fonctions comme ini_set() )
0