Aller au contenu

Problème de destruction de session


Sujets conseillés

Posté

Salut,

J'ai un pb avec une gestion de session :

Dans toutes les pages php, j'ai un include de 2 fichiers :

- 1 au début contenant la connexion à ma base de données, ainsi qu'un session_start

- 1 au milieu qui vérifie si l'utilisateur est loggé et fait un affichage ou un autre en fonction du résultat du test

$idClient = false;
$login = false;
extract ($_POST);
if ($provenance)
{
 if ($provenance == "formLogin")
 {
   $idClient = getIdClient ($login, $password);
 }
 elseif ($provenance == "formLogout")
 {
   logout ();
 }
}
else
{
 $idClient = loggedIn ();
 if ($idClient)
 {
   $login = $_SESSION ["login"];
 }
}

if ($idClient)
{
 login ($idClient, $login);
 showInfosLogged ($idClient);
}
else
{
 showFormLogin ();
}

Lorsque l'internaute se délogge, l'affichage montre bien le formulaire d'identification. Pourtant, dès que je change de page, il est de nouveau considéré comme loggé.

Il doit y avoir une bourde dans le raisonnement. Please help.

Posté

Bonjour,

Comment se passe le de-loggin ? Autrement dit, comment fais tu pour que la personne ne soit plus loggée, authentifiée ?

Anonymus

Posté

if ($idClient)

Ceci peut être considéré comme : Si la variable $idClient existe.

En fonction du register_globals, $idClient peut renvoyer une valeur dans tous les cas, même si elle n'existe pas. Elle est automatiquement créée quand tu fais appel à elle. Donc, ce morceau n'est pas 'fiable'.

session_destroy() :

Cette fonction ne détruit pas les variables globales associées avec la session, de même, elle ne détruit pas le cookie de session.

Ainsi, il ne faut pas se fier au session_destroy. Je te préconiserais plutot l'enregistrement de l'ensemble des variables de session avec des valeurs vides :

$_SESSION['idClient'] = "";

puis le renvoi vers une page d'information, grace à un header :

Vous êtes déconnecté

Ensuite, tu testes avec le bouton "précédent".

Anonymus.

Posté

En me basant sur tes conseils, j'ai fait une page logout.php qui est la cible de mon formulaire de logout : le formulaire renvoie à cette page, qui détruit la session de la façon que j'avais indiquée précédemment (vidage du contenu des variables sessions, vidage du tableau session, puis session_destroy), puis renvoie au referer.

Ca marche nickel.

Merci :)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...