Aller au contenu

Problème de destruction de session


MarvinLeRouge

Sujets conseillés

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.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

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

Anonymus

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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