Problème de SESSION ..

Résolu
Troski -  
Dynamix Messages postés 206 Statut Membre -
Bonjour, :] !
Depuis quelques joueurs, j'ai un problème que je n'arrive pas à illucider !
Je vais vous expliquer mon problème le plus simplement possible ;).

J'ai 3 pages:
-Inscription
-Connexion
-Espace membre

Ma table contiens 6 entrées:
-Pseudo, Mot de passe
-Adresse email, date d'inscription
-Avatar, bannissement.

____________________________

L'inscription à mon site réclame:
-Le pseudo, l'adresse e_mail, le mot de passe.
Une fois inscris je suis directement vers ma page membre.php.
Quand je veux afficher mes sessions, seulement les sessions Pseudo, Mot de passe et Adresse email s'affichent (sur 6 sessions).

Quand je me connecte, mon site réclame:
-Le pseudo, le mot de passe.
Une fois connecté, je suis redirigé vers ma page membre.php.
Quand je veux afficher mes sessions, seulement les sessions Pseudo et Mot de passe saffichent (sur 6 sessions).

____________________________

Ma question:
-Comment afficher toutes mes sessions (les entrées 6 qui sont dans ma base de données).



Voici mes réquêtes:

Inscription:
'SELECT count(*) FROM membre WHERE Pseudo="'.mysql_real_escape_string($_POST['Pseudo']).'" LIMIT 1';


Connexion:
'SELECT * FROM membre WHERE Pseudo="'.mysql_real_escape_string($_POST['Pseudo']).'" AND Mot_de_Passe="'.mysql_real_escape_string($_POST['Mot_de_Passe']).'" LIMIT 1';



Si besoin d'autres informations, aucun problème ;).
Un grand merci pour votre aide ! En esperant avoir été compréhensible =).


Note: Chaques entrées de ma table possèdent une $_SESSION chacune. Et je n'ai pas oublié la fonction session_start(); .




21 réponses

Dynamix Messages postés 206 Statut Membre 76
 
Qu'est ce que ça fait si tu fais un var_dump($_SESSION); ?
1
Dynamix Messages postés 206 Statut Membre 76
 
Ce n'est pas normal.
Il faut que tu envoies des données via ton formulaire, si tu as soumis ton formulaire le $_POST ne peut pas être vide...

De plus si j'ai bien compris, tu as un formulaire pour la connexion donc un champ mot de passe et pseudo en gros.

Et tu fais ça :

$_SESSION['Adresse_Email'] = $_POST['Adresse_Email'];
$_SESSION['Grade'] = $_POST['Grade'];
$_SESSION['Avatar'] = $_POST['Avatar'];
$_SESSION['Bannissement'] = $_POST['Bannissement'];

Hors dans ton formulaire tu ne dois pas avoir Grade, Adresse mail etc...

Je me trompe?
1
Troski
 
Résultat:

array
  'Pseudo' => string 'PSEUDO' (length=4)
  'Mot_de_Passe' => string 'MDP' (length=8)
  'Adresse_Email' => null
  'Grade' => null
  'Avatar' => null
  'Bannissement' => null


Les deux premieres sessions fonctionnes ^^'..
Mais pas les autres.

Note: Pas mal cette fonction ! Il faudra que je m'en rapelle ^^
0
Dynamix Messages postés 206 Statut Membre 76
 
Oui je te conseille cette fonction, très utile pour débugger. :)

Sinon on peut avoir le code où tu crées tes variables de session?
0

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

Posez votre question
Troski
 
Oki, merci pour l'astuce ^^.

Voici pour mon module de connexion, par exemple (celui d'inscription n'étant pas très different):



<?php

session_start();  
if (isset($_SESSION['Pseudo'])) 
{ 
     header ('Location: index.php');   
}


/*
 Parcour du formulaire de connexion.
*/

if (isset($_POST['Connexion']) && $_POST['Connexion'] == 'Connexion') 
{ 
   if ((isset($_POST['Pseudo']) && !empty($_POST['Pseudo'])) && (isset($_POST['Mot_de_Passe']) && !empty($_POST['Mot_de_Passe']))) 
   { 
 
 
  // Connexion à la base de donnée.
  
 include("Connexion_Base.php");
      
	  
      // Vérification de la disponibilité des champs.
	  
         $sql = 'SELECT * FROM membre WHERE Pseudo="'.mysql_real_escape_string($_POST['Pseudo']).'" AND Mot_de_Passe="'.mysql_real_escape_string($_POST['Mot_de_Passe']).'" LIMIT 1';
         $req = mysql_query($sql);
         $data = mysql_fetch_array($req);

      if (isset($data['Pseudo']) && !empty($data['Pseudo']) && $data['Mot_de_Passe'] == $_POST['Mot_de_Passe'])
	  { 
            $_SESSION['Pseudo'] = $_POST['Pseudo'];
			$_SESSION['Mot_de_Passe'] = $_POST['Mot_de_Passe'];
			$_SESSION['Adresse_Email'] = $_POST['Adresse_Email'];
			$_SESSION['Grade'] = $_POST['Grade'];
			$_SESSION['Avatar'] = $_POST['Avatar'];
			$_SESSION['Bannissement'] = $_POST['Bannissement'];
         include_once "membre.php";
         exit(); 
      } 
	  
      // Traitement des données envoyées (négatives).
	  
	  elseif ($_SESSION['Pseudo'] != $_POST['Pseudo'] && $_SESSION['Mot_de_Passe'] != $_POST['Mot_de_Passe'])
	    {
		 $erreur_1 = 'Vous avez spécifiez des indentifiants incorrects.';
		}
		  
      // Traitement des données envoyées (inconnues).
	  
      else 
	  { 
         $erreur_fatale = 'Un problème technique inconnu est apparut.'; 
		 $erreur_fatale = 'Veuillez contacter un administrateur pour plus d\'informations.';
      } 
   }
   else 
    { 
      $erreur_2 = 'Veuillez compléter tous les champs du formulaire de connexion.'; 
    }  
}  
?>
0
Troski
 
Erf désoler, je n'ai pas vu que la formation du script allait être modifiéµ :/.

J'ai mis en valeur la création des session [gras].
0
Dynamix Messages postés 206 Statut Membre 76
 
var_dump($_POST)?
0
Troski
 
Dans ma page membre:

array
  empty



Même résultat dans ma page 'Connexion' :/.
0
Troski
 
Ah, désoler !
J'ai du me tromper en insérant la fonction :S.
Tout mes excuse, voici le résultat:

array
  'Pseudo' => string Pseudo(length=4)
  'Mot_de_Passe' => string MDP(length=8)
  'Connexion' => string 'Connexion' (length=9)

(Dans la page membre.php)


Pour les différentes sessions..
Je ne sais pas comment m'y prendre, mais par exemple, dans ma page membre.php j'ai ce script:

if ($_SESSION['Grade'] = 1)
echo 'Statu: Modérateur';


Par défaut, l'entrée Grade vaut 0.
Donc j'aimerais savoir comment mettre en place ce script :S..
(Sachant que $_SESSION['Grade'] n'existe donc pas :/).

Donc en clair.. Comment récupérer telle ou telle entrée du membre .. ?
0
Dynamix Messages postés 206 Statut Membre 76
 
Tu l'extrais de ta base de données tout simplement. :)
0
Troski
 
Pourais tu me donner un vague exemple ?

Car j'ai fait de cette façon là :


try
    {
	 $Base = new PDO('secret défense :P');
    }


catch(Exception $e)
    {
     die('Erreur : '.$e->getMessage());
    }

$Requete = $Base->query('SELECT * FROM membre WHERE Pseudo="$_SESSION[\'Pseudo\']" LIMIT 1');

while ($Membre = $Requete->fetch())
    {
     $Membre['Pseudo'] = $_SESSION['Pseudo'];
	 $Membre['Mot_de_Passe'] = $_SESSION['Mot_de_Passe'];
	 $Membre['Adresse_Email'] = $_SESSION['Adresse_Email'];
	 $Membre['Date_Inscription'] = $_SESSION['Date_Inscription'];
	 $Membre['Avatar'] = $_SESSION['Avatar'];
	 $Membre['Bannissement'] = $_SESSION['Bannissement'];



Mais ca n'a pas l'air de fonctionner :/.
0
Dynamix Messages postés 206 Statut Membre 76
 
$Membre['Pseudo'] = $_SESSION['Pseudo'];

Je ferais plutôt l'inverse.
0
Troski
 
Toujours ce problème d'affichage :/.
Quand je me connecte, par exemple, je n'arriche pas à afficher l'adresse email, ca n'affiche rien :(.
0
Dynamix Messages postés 206 Statut Membre 76
 
T'es sûr que si tu fais $_SESSION['Adresse_Email'] = $Membre['Adresse_Email']; ça ne va pas?
0
Troski
 
Oui =/..


$Requete = $Base->query('SELECT * FROM membre WHERE Pseudo="$_SESSION[\'Pseudo\']" LIMIT 1');

while ($Membre = $Requete->fetch())
    {
              $_SESSION['Pseudo'] = $Membre['Pseudo'];
	 $_SESSION['Mot_de_Passe'] = $Membre['Mot_de_Passe'];
	 $_SESSION['Adresse_Email'] = $Membre['Adresse_Email'];
	 $_SESSION['Date_Inscription'] = $Membre['Date_Inscription'];
	 $_SESSION['Avatar'] = $Membre['Avatar'];
	 $_SESSION['Bannissement'] = $Membre['Bannissement'];
    }

$Requete->closeCursor();
?>
0
Dynamix Messages postés 206 Statut Membre 76
 
Ca me semble bizarre quand même...t'as bien les informations en base de données au moins?
0
Troski
 
Oui ^^
Toutes les entrées ont une valeur :)..
0
Dynamix Messages postés 206 Statut Membre 76
 
Le problème persiste toujours?
0
Troski
 
Bonsoir !
Enfet, j'aimerais d'abord vous remercier pour le temps occasionné à m'avoir aidé ;).

Mais, oui, le problème persiste toujours :/.
Je pense que cela vient de ma requête (que j'ai essayé de développer) dans ma page membre.php :


$Requete = $Base->prepare('SELECT * FROM membre WHERE Pseudo = ? AND Mot_de_Passe = ? LIMIT 1');
$Requete->execute(array($_SESSION['Pseudo'], $_SESSION['Mot_de_Passe']));


while ($Membre = $Requete->fetch())



Pourtant, cette requête signifit bien:
Prendre toutes les entrées dans la base membre quand le pseudo et le mot de passe sont équivalent à celui de l'utilisateur (pour récupérer uniquement ses données, et non pas toutes les données de la base).
Mais ca n'y change rien.
Seulement le Pseudo et le mot de passe sont affichés. Même pas l'adresse E_mail =/.
0
Troski
 
C'est bon, j'ai réussis !
J'ai fais une erreur toute bête :S !
J'ai procédé de cette façon:


while ($Membre = $Requete->fetch())
{
?>

Ma page complète.

<?php 
}



Et ca marche.. Enfin bref.
Merci beaucoup pour ton aide et pour les petits conseils :].
0