Barre menu s'affiche malgré deconnexion

Résolu/Fermé
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 20 juil. 2015 à 19:10
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 23 juil. 2015 à 23:27
Bonjour,

J'ai ma barre menu qui s'affiche malgré la déconnexion sur mon site :


Code généré de la page :
<!DOCTYPE html>
<html>
    <head>
      <link rel='stylesheet' href='css/style.css'>
    </head>
    <meta charset="UTF-8" >
    <body>
	      <div class='menu'>
    <ul>
     <li><a href="index.php?page=membre">Accueil</a></li>
     <li><a href="index.php?page=update">Changer vos informations</a></li>
     <li><a href="index.php?page=liste_membre">les membres</a></li>
     <li><a href="index.php?page=amis">Vos amis</a></li>
 
     <li>
        <a href="index.php?page=invitations">Invitations</a>
               <p class='ibi_invitations'>0</p>        </li>
        <li>
                <a href="index.php?page=conversations">Messages</a>
                        </li>

<li class="nbr">2 membres</li>
   </ul>
</div>

<div class="right">
			<ul>
				<li><a href="index.php?page=logout">Se déconnecter</a></li>
			</ul>
		</div>          <div id='content'>
          ?<h1>Connexion</h1>
<form method="POST" action="">
  <label for="pseudo">Votre pseudo : </label>
  <input type="text" name="pseudo"><br />
  <label for="password">Votre password : </label>
  <input type="password" name="password"><br /><br />
  <input type="submit" value="Se connecter" name="submit">
</form>

<a href='index.php?page=register'>Pas encore membre </a>    </div>
    </body>


Comment régler cela ?

Merci d'avance :)

9 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
20 juil. 2015 à 19:31
Bonjour,

Avec un IF !
Tu testes si l'utilisateur est connecté ou non... et en fonction.. tu affiches ou pas.

0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
20 juil. 2015 à 19:50
je l'ai déjà ce if
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
20 juil. 2015 à 21:06
Où ça ?
Pas dans le code que tu as posté. ...
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
20 juil. 2015 à 21:23
C'est dans quelle page exactement que je dois mettre le if ? login.php ?
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
20 juil. 2015 à 21:49
Voici mon login.php :
<h1>Connexion</h1>
<?php

   if(isset($_POST['submit']))
   {
	   if(empty($_POST['pseudo']))
	   {
		   $errors[] = "Veuillez saisir votre pseudo";
	   }   
	   if(empty($_POST['password']))
	   {
		   $errors[] = "Veuillez saisir votre password";
	   }
	   
	   if(!empty($errors))
	   {
		   foreach($errors as $error)
		   {
			   echo"<div class ='error'>".$error."</div>";
		   }
	   }else{
			   if(verifier_combinaison_pseudo_password($_POST['pseudo'],$_POST['password']) == 0)
			   {
				   echo"<div class='error'> Pseudo ou password incorrect</div>";
			   }else{
				   session_start();
				   $_SESSION['pseudo'] = $_POST['pseudo'];
				   header("Location:index.php?page=membre"); 
               }
			   
		   }
	   }
	   
      
?>
<form method="POST" action="">
  <label for="pseudo">Votre pseudo : </label>
  <input type="text" name="pseudo"><br />
  <label for="password">Votre password : </label>
  <input type="password" name="password"><br /><br />
  <input type="submit" value="Se connecter" name="submit">
</form>

<a href='index.php?page=register'>Pas encore membre </a>
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
22 juil. 2015 à 14:41
petit up
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
Modifié par Yuh12 le 22/07/2015 à 16:35
Après avoir créé une variable de SESSION qui enregistre le fait qu'un utilisateur soit connecté :

if(isset($_SESSION['login']))
{
// la totalité du code que tu veux afficher lors de la connexion
}
else
{
// le reste
}
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10 > Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017
22 juil. 2015 à 16:58
justement le menu s'affiche sur la page login.php, comment expliquer cela ? mon menu étant dans un div
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
22 juil. 2015 à 17:11
Parce que tu fais un include de ton login.php quelque part non?
C'est ton architecture qui doit être remise en question.

Si ta page login ne contient pas le menu c'est que tu include login dans une partie qui elle contient ce menu.
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10 > Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017
22 juil. 2015 à 17:44
j'ai trouvé d'ou ça vient, à la fin de mon index.php :

<!DOCTYPE html>
<html>
    <head>
      <link rel='stylesheet' href='css/style.css'>
    </head>
    <meta charset="UTF-8" >
    <body>
	      <?php include('body/menu.php'); ?>
          <div id='content'>
          <?php
              include($content);
           ?>
    </div>
    </body>
</html>


cette ligne :
	      <?php include('body/menu.php'); ?>


si je la supprime, j'ai plus de menu et si je refais les include menu sur chacun de mes codes mon menu retourne sur le content que faire ? :(
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
22 juil. 2015 à 18:47
pourquoi mon menu ne s'affiche plus dans aucune de mes pages maintenant alors que je fais les nclude partout ?
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
22 juil. 2015 à 19:33
parce que tu n'es pas connecté et que $_SESSION['login'] n'existe pas, donc il ne passe pas dans ton if
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
22 juil. 2015 à 19:34
Essaye de te connecter et il y aura ton menu, c'est bien ça que tu voulais non ?
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10 > Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017
22 juil. 2015 à 19:44
<h1>Connexion</h1>
<?php

   if(isset($_POST['submit']))
   {
	   if(empty($_POST['pseudo']))
	   {
		   $errors[] = "Veuillez saisir votre pseudo";
	   }   
	   if(empty($_POST['password']))
	   {
		   $errors[] = "Veuillez saisir votre password";
	   }
	   
	   if(!empty($errors))
	   {
		   foreach($errors as $error)
		   {
			   echo"<div class ='error'>".$error."</div>";
		   }
	   }else{
			   if(verifier_combinaison_pseudo_password($_POST['pseudo'],$_POST['password']) == 0)
			   {
				   echo"<div class='error'> Pseudo ou password incorrect</div>";
			   }else{
				   session_start();
				   $_SESSION['pseudo'] = $_POST['pseudo'];
				   header("Location:index.php?page=membre"); 
               }
			   
		   }
	   }
	   
  
if(isset($_SESSION['login']))
{
// la totalité du code que tu veux afficher lors de la connexion donc par exemple :
include('body/header.php');
include('body/menu.php');
}
else
{
header("Location: index.php?page=login")
}
?>

<form method="POST" action="">
  <label for="pseudo">Votre pseudo : </label>
  <input type="text" name="pseudo"><br />
  <label for="password">Votre password : </label>
  <input type="password" name="password"><br /><br />
  <input type="submit" value="Se connecter" name="submit">
</form>

<a href='index.php?page=register'>Pas encore membre </a>


j'ai : Parse error: syntax error, unexpected '}' in C:\wamp\www\rs\pages\login.php on line 44

l'erreur peut paraitre bete mais je ne la trouve pas :(
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
22 juil. 2015 à 19:46
Point virgule manquant ligne 43 !
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10 > jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024
22 juil. 2015 à 19:48
je l'avais déjà corrigé mais j'ai eu ceci : La page n'est pas redirigée correctement
c'est pour cela que je suis revenu vers vous :/
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
22 juil. 2015 à 21:26
Quel est l'URL sur lequel il tente de rediriger ton site?
Ou est ce que tu fais des header location ?
As-tu essayé de tous les mettre en commentaire ?

Essaye ceci sinon :
echo "<script type='text/javascript'>document.location.replace('index.php?page=membre');</script>";


(C'est très sale comme code mais c'est pour tester !)
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
22 juil. 2015 à 21:30
j'ai mis mon header.php en commentaire et tout remarche :o

<div class='header'>
<?php
require_once('functions/membre.func.php');
 $result= infos_membre_connecte();

//-------------------------------------------------//
 
 $infos  = $result['result'];
if(count($infos)>0){
   $pseudo = isset($infos['pseudo'])?$infos['pseudo']:'';
   echo "Bienvenue ". $pseudo;
}else{
 echo "<br> Aucun résultat.";
}
if(!isset($_SESSION['pseudo']))
{
header("Location:index.php?page=login");
}
?>
<p><a href="index.php?page=logout">Se déconnecter</a></p>
</div>
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
Modifié par Yuh12 le 22/07/2015 à 21:56
Le header est intégré dans toute les pages... Donc en faisant ça :

if(!isset($_SESSION['pseudo']))
{
header("Location:index.php?page=login");
}


Tu lui dis : pour chaque utilisateur déconnecté, redirige vers login mais sur login y a header donc tu crées une boucle infinie.
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
22 juil. 2015 à 21:40
ah, donc dois-je commenter ces 4 lignes de codes ?
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
22 juil. 2015 à 21:43
quand je commente cette ligne, sur mon login j'ai "Aucun résultat." qui s'affiche c'est génant
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
Modifié par Yuh12 le 22/07/2015 à 21:57
Je pense que c'est l'heure de se débrouiller un peu ;p , c'est aussi ça la programmation, je peux pas faire le projet à ta place. Bon courage !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
Modifié par Zakarya93 le 23/07/2015 à 22:00
ça va mieux, mtn j'ai ceci : Notice: Undefined index: avatar in C:\wamp\www\rs\pages\membre.php on line 16

 <?php
include('body/menu.php');
include('body/header.php');
?>
<div class="info">
        <?php
  // récupérations des variables AVANT de les utiliser
  $email   = isset($infos['email'])?$infos['email']:'';
  $sexe    = isset($infos['sexe'])?$infos['sexe']:'';
  $apropos = isset($infos['apropos'])?$infos['apropos']:'';

  print_r ($infos);
 ?>
<div class="info">
 <p><a href="index.php?page=update_avatar">Changer votre photo de profil</a></p>
 <a href="index.php?page=update_avatar"><img src="avatar/<?php echo $infos['avatar']; ?>"" height='200' width='200' alt='avatar'></a>
 <p><strong>Email : </strong><em><?php echo $email; ?></em></p>
 <p><strong>Sexe : </strong><em><?php echo $sexe; ?></em></p>
 <p><strong>A propos de vous : </strong><em><?php echo $apropos; ?></em></p>
</div> 
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
Modifié par Yuh12 le 23/07/2015 à 21:50
Tu ne fermes pas ta première div class info.

Et à la ligne 16 comme l'indique l'erreur, si tu cherches 4 secondes tu vois que le texte n'est pas de la même couleur sur CCM (et logiquement aussi sur ton éditeur de texte).
Donc qu'il y a un problème de guillemet, il y a deux "" qui se suivent après <?php echo $infos['avatar']; ?>
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
23 juil. 2015 à 22:02
correction :
<?php
include('body/menu.php');
include('body/header.php');
?>
<div class="info">
        <?php
  // récupérations des variables AVANT de les utiliser
  $email   = isset($infos['email'])?$infos['email']:'';
  $sexe    = isset($infos['sexe'])?$infos['sexe']:'';
  $apropos = isset($infos['apropos'])?$infos['apropos']:'';

  print_r ($infos);
 ?>

 
 <p><a href="index.php?page=update_avatar">Changer votre photo de profil</a></p>
 <a href="index.php?page=update_avatar"><img src="avatar/<?php echo $info['result']['avatar'] ; ?>" height='200' width='200' alt='avatar'></a>
 <p><strong>Email : </strong><em><?php echo $email; ?></em></p>
 <p><strong>Sexe : </strong><em><?php echo $sexe; ?></em></p>
 <p><strong>A propos de vous : </strong><em><?php echo $apropos; ?></em></p>
</div>


j'ai : Notice: Undefined variable: info in C:\wamp\www\rs\pages\membre.php on line 17
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
23 juil. 2015 à 22:06
Il manquait un "s" à infos, j'ai maintenant pas d'erreurs mais aucune info ne s'affiche :
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
23 juil. 2015 à 22:16
Tu es connecté ?

Dans ton header il y a :
   $pseudo = isset($infos['pseudo'])?$infos['pseudo']:'';
   echo "Bienvenue ". $pseudo;


Donc il faut voir si $infos['pseudo'] existe et pour cela il faut voir dans ta fonction infos_membre_connecte();

A la ligne ou tu construit ton $infos['pseudo'] c'est à dire $_SESSION['pseudo'] donc est ce que $_SESSION['pseudo'] existe? Sinon c'est normal qu'il n'y ait rien puisque c'est ce que tu lui dis.

Qu'est ce que tu as codé là dedans et qu'est ce que tu as copier coller... ?
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
23 juil. 2015 à 22:20
oui il y est :
<?php
//*********************************************//
//Fichier : membre.func.php
//*********************************************//
ini_set("display_errors", "1");
error_reporting(E_ALL);
//-------------------------------------------
// Include du fichier de connexion à la BDD
//-------------------------------------------
$DIR_SITE = $_SERVER['DOCUMENT_ROOT'] . "rs"; // chemin racine de ton site
$CnxBDD = $DIR_SITE . "/functions/connect.php"; // emplacement du fichier depuis la racine de ton site

if(file_exists($CnxBDD)){
 require_once($CnxBDD) ;
}else{
 echo "<br><b>ERREUR !</b> Fichier $CnxBDD Introuvable";
}

if(!function_exists('infos_membre_connecte')){
/**
* function qui va recuperer les infos de l'utilisateur connecté
*/
function infos_membre_connecte(){
   global $bdd; // déclaration globale de BDD
   $infos=array();

   // Récupération variable de session PSEUDO
   $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:'';
   
   //préparation de la requete :
   $sql = "SELECT * FROM utilisateurs WHERE pseudo = :pseudo";
   $params = array(":pseudo"=>$pseudo);
  
   //stocke la requête et les paramêtres dans la variable de retour (cela facilite le debogage au cas où ! )
   $infos['sql'] = $sql;
   $infos['params'] = $params;
  
   //exécution de la requête
   try{
      $prepare = $bdd->prepare($sql);
      $prepare->execute($params);
      // on stocke le résultat de la requête dans un ARRAY
      $result = $prepare->fetchall();
      $infos['result'] = (count($result)>0) ? $result[0]  : NULL;
   } catch(Exception $e){
      die('Erreur : '.$e->getMessage());
   }

//  /!\ NE PAS OUBLIER DE FAIRE UN RETURN !!
print_r($infos);
return $infos;

}//Fin de la fonction
}
0
Yuh12 Messages postés 184 Date d'inscription mercredi 7 mai 2014 Statut Membre Dernière intervention 28 septembre 2017 24
Modifié par Yuh12 le 23/07/2015 à 22:35
Non mais j'ai vu qu'il y était.. et tu aurais pu me renvoyer juste la ligne.

Mais cette ligne veut dire
  $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:'';


Si la variable de session 'pseudo' existe alors $pseudo est égale à cette variable sinon elle est égale à ' ' donc rien.

Donc la question était est ce que la variable $_SESSION['pseudo'] existe dans le sens de isset, est ce que tu la crée quelque part.

Après si tu ne comprend pas ce code, pourquoi est ce que tu l'utilises...
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
23 juil. 2015 à 23:27
Resolu merci :)
0