Problème de déconnexion

Résolu/Fermé
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 - Modifié par Legrandfifou le 24/06/2015 à 02:28
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 - 26 juin 2015 à 15:40
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 :
<!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">
<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>
Et donc ca marche quand on clique sa déconnecte mais le Connexion ne se transforme pas en Déconnexion pourtant j'ai mis
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

Utilisateur anonyme
24 juin 2015 à 10:05
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
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+
0
Firoxyd Messages postés 97 Date d'inscription mardi 23 juin 2015 Statut Membre Dernière intervention 28 juin 2017 45
24 juin 2015 à 10:25
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
session_start();

avant de pouvoir faire
  if (isset($_SESSION['pseudo'])) ...

sinon la variable de session n'existera jamais.
0
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 5
Modifié par Legrandfifou le 24/06/2015 à 13:36
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 :

 <?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
0
Utilisateur anonyme
24 juin 2015 à 14:02
Hello,

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', '');
}
0
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 5
24 juin 2015 à 20:50
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 :
	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 ..
0
Legrandfifou Messages postés 109 Date d'inscription samedi 3 mai 2014 Statut Membre Dernière intervention 17 mars 2017 5
25 juin 2015 à 21:00
Et si je met le session_start(); au début, il affiche bien le déconnexion mais impossible de se déconnecter il ne supprime pas la session..
0
Utilisateur anonyme
26 juin 2015 à 10:16
Si je résume :
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+
0