Problème de déconnexion
Résolu
Legrandfifou
Messages postés
109
Date d'inscription
Statut
Membre
Dernière intervention
-
Legrandfifou Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
Legrandfifou Messages postés 109 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai créer un système de connexion , tout marche nickel donc j'ai une page de connexion , pour y accéder on a un bouton Connexion en haut a droite. Sur ma page de connexion j'ai :
Donc la tout marche , la connexion marche nickel , on peut se connecter seul problème , une fois connecter le bouton connexion reste du coup j'ai rajouter ca sur la page PHP de mon menu ( que j'inclus après dans la page principale )
Voila donc en fait je cromprends pas pourquoi en fait ca marche pas et je cherche partout sans trouver de réponse..
j'ai créer un système de connexion , tout marche nickel donc j'ai une page de connexion , pour y accéder on a un bouton Connexion en haut a droite. Sur ma page de connexion j'ai :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Quad Dutch Clan - Joins us !</title>
<link rel="stylesheet" type="text/css" title="style" href="style.css"/>
</head>
<body>
<?php include("menu.php"); ?>
<?php
$bdd = new PDO ('mysql:host=localhost;dbname=connexion', 'root');
if(isset($_POST['connexion']))
{
$pseudo = addslashes($_POST["pseudo"]) ;
// Hachage du mot de passe
$pass_hache = sha1($_POST['password']);
// Vérification des identifiants
$req = $bdd->prepare("SELECT pseudo AND password FROM membres WHERE pseudo = '$pseudo' AND password = '$pass_hache' ");
$req->execute(array(
'pseudo' => $pseudo,
'password' => $pass_hache));
$resultat = $req->fetch();
if (!$resultat)
{
echo '<div class="mdp_id_error">Mauvais identifiant ou mot de passe !</div>';
}
else
{
session_start();
$_SESSION['pseudo'] = $pseudo;
echo 'Vous êtes connecté !';
}
}
if (isset($_SESSION['pseudo']))
{
}
else
{
echo
'<div class="connexion_case">
<form action="" method = "POST">
<label for="pseudo"> Pseudo : </label>
<input type="texte" name = "pseudo" class="connexion_formulaire_case"/>
<label for="password"> Password : </label>
<input type="password" name = "password" class="connexion_formulaire_case"/>
<br />
<button type="submit" name="connexion" class="connexion_button">Connexion</button>
</form>
<div>'
;
}
if(isset($_POST['deconnexion']))
{
session_start();
// Suppression des variables de session et de la session
$_SESSION = array();
session_destroy();
// Suppression des cookies de connexion automatique
setcookie('login', '');
setcookie('pass_hache', '');
}
?>
</body>
</html>
Donc la tout marche , la connexion marche nickel , on peut se connecter seul problème , une fois connecter le bouton connexion reste du coup j'ai rajouter ca sur la page PHP de mon menu ( que j'inclus après dans la page principale )
<div class="logo">Et donc ca marche quand on clique sa déconnecte mais le Connexion ne se transforme pas en Déconnexion pourtant j'ai mis
<div class="txt">QUAD DUTCH CLAN
<img src="separation.png" class="separation">
<ul>
<a href="index.php">HOME</a>
<a href="#">SHOP</a>
<a href="#">FORUM</a>
<a href="#">SERVER</a>
<a href="#">PLATOON</a>
</ul>
<img src="emblem.png" class="emblem">
<?php
if (isset($_SESSION['pseudo']))
{
echo '<a href="" class="deconnexion">Déconnexion</a>';
}
else
{
echo '<a href="connexion.php" class="connexion">Connexion</a>';
}
?>
<a href="inscription.php" class="inscription">Inscription</a>
</div>
</div>
if (isset($_SESSION['pseudo']))
{
echo '<a href="" class="deconnexion">Déconnexion</a>';
}
else
{
echo '<a href="connexion.php" class="connexion">Connexion</a>';
}
?>
Voila donc en fait je cromprends pas pourquoi en fait ca marche pas et je cherche partout sans trouver de réponse..
2 réponses
Hello, tu affiches ton bouton déconnexion si $_SESSION['pseudo'] existe, et si il existe pas tu affiche le bouton connexion.
Si il n'y a aucun changement entre déconnexion et connexion cela veut dire que ta variable $_SESSION['pseudo'] n'est jamais créé ou est mal supprimée.
ce que je te propose c'est d'afficher ce code à un endroit dans ta page
Effectue l'action de te connecter et de te connecter et regarder l'état de pseudo dans ta variable $_SESSION.
A+
Si il n'y a aucun changement entre déconnexion et connexion cela veut dire que ta variable $_SESSION['pseudo'] n'est jamais créé ou est mal supprimée.
ce que je te propose c'est d'afficher ce code à un endroit dans ta page
echo '<pre>'; print_r($_SESSION); echo '</pre>';
Effectue l'action de te connecter et de te connecter et regarder l'état de pseudo dans ta variable $_SESSION.
A+
Salut,
Je ne sais pas si tu as posté toute la page principale (celle avec les boutons de connexion/déconnexion).
Mais dans ce que tu as posté il semble manquer un
avant de pouvoir faire
sinon la variable de session n'existera jamais.
Je ne sais pas si tu as posté toute la page principale (celle avec les boutons de connexion/déconnexion).
Mais dans ce que tu as posté il semble manquer un
session_start();
avant de pouvoir faire
if (isset($_SESSION['pseudo'])) ...
sinon la variable de session n'existera jamais.
J'y ai pensé aussi , et je l'ai fait mais quand je le met le bouton déconnexion change bien mais lorsque je clique sur déconnexion rien ne se passe la session ne se détruit pas :/
J'ai rajouté ceci :
Mais la sa change en connexion/déconnexion mais quand on clique sur le déconnexion rien ne se passe
J'ai rajouté ceci :
<?php
session_start();
if (isset($_SESSION['pseudo']))
{
echo '<form action="" method = "POST"><a href="" class="deconnexion">Déconnexion</a></form>';
}
else
{
echo '<a href="connexion.php" class="connexion">Connexion</a>';
}
if(isset($_POST['deconnexion']))
{
session_start();
// Suppression des variables de session et de la session
$_SESSION = array();
session_destroy();
// Suppression des cookies de connexion automatique
setcookie('login', '');
setcookie('pass_hache', '');
}
?>
Mais la sa change en connexion/déconnexion mais quand on clique sur le déconnexion rien ne se passe
Hello,
j'ai pris l'habitude de ne pas faire de
Essaie cela :
j'ai pris l'habitude de ne pas faire de
session_destroy()lors d'une déconnexion car j'utilise la variable session pour d'autre fonctionnalité de mes sites internet.
Essaie cela :
if(isset($_POST['deconnexion'])) { // Suppression des variables de session et de la session unset($_SESSION['pseudo']); // Suppression des cookies de connexion automatique setcookie('login', ''); setcookie('pass_hache', ''); }
Donc j'ai testé ca ne marche pas je récapitule pour que tout soit clair J'ai une lien <a href="connexion.php" class="connexion">Connexion</a> qui permet d'aller a la page de connexion quand on se connecte , le connexion en haut a droite doit se changer en déconnexion mais il doit rester cliquable donc j'ai mis <a href="" class="deconnexion">Déconnexion</a>
et la fonction PHP de déconnexion :
Sauf que la j'ai bien la connexion qui se fait , mais lorsqu'on est connecté il n'affiche pas le Déconnexion mais il affiche connexion et lorsque l'on reclique sur ce Connexion sa déconnecte l'utilisateurs ..
et la fonction PHP de déconnexion :
if(isset($_GET['deconnexion']))
{
// Suppression des variables de session et de la session
unset($_SESSION['pseudo']);
// Suppression des cookies de connexion automatique
setcookie('login', '');
setcookie('pass_hache', '');
}
Sauf que la j'ai bien la connexion qui se fait , mais lorsqu'on est connecté il n'affiche pas le Déconnexion mais il affiche connexion et lorsque l'on reclique sur ce Connexion sa déconnecte l'utilisateurs ..
Si je résume :
Au début de chaque pages :
"Connecter" un utilisateur
Vérifier si un internaute est connecté
Déconnecter un utilisateur
Afficher la variable $_SESSION pour débuger
Si tu fais un print_r($_SESSION) tu devrais voir $_SESSION['pseudo'] quand l'utilisateur est connecté et tu ne devrais pas le voir quand personne n'est connecté.
A+
Au début de chaque pages :
session_start();
"Connecter" un utilisateur
$_SESSION['pseudo']='unPseudoCommeUnAutre';
Vérifier si un internaute est connecté
if(isset($_SESSION['pseudo'])){ // Connecté }else{ // Pas connecté }
Déconnecter un utilisateur
unset($_SESSION['pseudo']);
Afficher la variable $_SESSION pour débuger
echo '<pre>'; print_r($_SESSION); echo '</pre>';
Si tu fais un print_r($_SESSION) tu devrais voir $_SESSION['pseudo'] quand l'utilisateur est connecté et tu ne devrais pas le voir quand personne n'est connecté.
A+