Des sessions qui se mélangent !

Nouveau WRInaute
Bonjour à tous, voici donc mon probléme.

Le probléme se situe au niveau de la visualisation des profils de mes membres.

La visualisation se fait depuis un lien dans lequel l'id du membre est passé en parametre, ainsi sur la page profil je recupere cet id, et j'affiche donc les informations concernant ce membre depuis une base de donnée MySQL.

jusqu'à là aucun soucis, cependant depuis peu j'ai mis au point un system d'album photo, je voudrais donc afficher cet album sur le profil du visiteur.

pour l'instant la ligne permettant d'afficher l'album photo est commenté.

mais lorsque je la décommente, au premier chargement du profil tout fonctionne normalement, l'album y est afficher correctement. Apres raffraichissement de la même page (F5), je m'apércois que le pseudo loggué change et que ce n'est pas que le pseudo, en effet dans la partie gestion du compte du membre loggué on à accé dés lors aux informations relative au profil visualisé et non au membre identifié !

J'ai donc procédé à plusieurs débuggage. Ces manipulations m'on conduit à plusieurs conclusions :

- Le probléme ne viens pas de la partie identification.
- le nom de la variable pour passé l'id du membre est la même que la variable $_SESSION['id_membre'] qui est initialisé lorsque l'utilisateur se logue, j'ai donc changé les nom et les aies nommé distinctement, aucune amélioration du résultat.
- Ce probléme n'existe QUE sur la page profil.

Voici une presentation des fichiers concernants le fonctionnement de mes sessions :

Lorsque l'utilisateur se loggue

Nous avons le fichier logged.php
Code:
<?php
$pseudo = htmlentities($_POST['pseudo']);
$mdp = htmlentities($_POST['mdp']);
$mdp = md5($mdp);
include ("conexion_bdd.php");
$requete = mysql_query("SELECT * FROM membres WHERE pseudo='$pseudo'");
$donnee = mysql_fetch_array($requete);
if(isset($mdp) AND isset($pseudo) AND $mdp != $donnee['mdp'] OR $mdp == null OR $pseudo == null)
{
header("Location:../signin.php");
}
else
{
header("Location:../index.php");
        session_destroy();
        session_start();
        $_SESSION['pseudo'] = $pseudo ;
        $_SESSION['id_membre'] = $donnee['id_membre'];
        $_SESSION['level'] = $donnee['level'];
        $_SESSION['logged'] = true;

}
mysql_close();
?>

Ce fichier creer des variable $_SESSION qui me permettera de suivre l'utilisateur sur toute mes pages et de les adapté en fonction de ces variables


checklog.php :

Code:
<?php
session_start(); // Demarrage de la session
?>

Ce fichier est inclus sur toute les pages il me permet d'avoir accés en particulier à $_SESSION['logged'] = boolean , pour savoir si l'utilisateur s'est logué ou non.

viewprofil.php :
Code:
<?php include("inc/checklog.php");?>
<html>
<head>
<title>VotreStyle.Com : Visualiser un profil.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <meta name="Description" content="Un profil personalisé sur Votre Style avec vos albums photos !" />
       <meta name="Keywords" content="look,style,communauté,tendance,fashion,vetements,mode,jeans,vestes,t-shirt,ensemble,panoplies,articles,article"	 />
	   <link rel="stylesheet" media="screen" type="text/css" title="designbasic" href="vsclear.css" />
</head>
<body>

<div id="corps">
<div id="rdmpic"><?php include("inc/rdmpic.php");?></div>
<div id="header"></div>
<div id="soushead"><?php include("inc/blockmembre.php");?></div>
<div id="navigation">
<div id="menu"><?php include("inc/menu.php");?></div>
<div id="partner"><?php include("inc/blockpartenaires.php");?></div>
</div>

<!-- finn de la partie navigation ------------------------------------------------------------------------->

<div id="contenu">

<div class="pub"><?php include("inc/addons/google/pub/pub.php");?></div>
<?php
$id = $_GET['id_membre'];
include("inc/conexion_bdd.php");
$req = mysql_query("SELECT * FROM membres WHERE id_membre='$id'");


$infos = mysql_fetch_array($req);
echo "<div class='galerie'>";
echo "<div id='profil'>";
echo "<hr/>";
echo "<table border='0' color='purple'>";
echo "<tr>";


switch ($infos['sexe']) {
    case "Homme":
        print "<td><div class='titred'><h3><font color='blue'>Profil de ".$infos['pseudo']."</font></h3></div></td></tr>";
        break;
    case "Femme":
        print "<td><div class='titred'><h3><font color='#E809D0'>Profil de ".$infos['pseudo']."</font></h3></div></td></tr>";
        break;
}

echo "<td width='20%'><div align='left'><a href='".$infos['photo_membre']."' rel='lightbox'><img src=".$infos['photo_membre']." height='70' border='0'/></a></div></td>";
echo "<tr><td><p>Departement : ".$infos['departement']."</td></tr>";
echo "<tr></tr>";
echo "<td><p>Date de naissance : ".$infos['jour2n']."/".$infos['mois2n']."/".$infos['annee2n']."</td>";
echo "<tr></tr>";
echo "<td><p>Sexe : ".$infos['sexe']."</td>";
echo "<tr></tr>";
echo "<td><p>Mon style : ".$infos['style']."</td></tr>";
echo "<tr></tr>";
echo "<td colspan='50'><p> Comment avez vous connu(e) le site ? : ".$infos['source']."</td></tr>";
echo "<tr></tr>";
echo "<td colspan='50'><p>Description : ".$infos['description']."</td></tr>";
echo "<tr></tr>";
echo "<td><p>J'aime : ".$infos['jaime'];
echo "<tr></tr>";
echo "</td><td><p>Je n'aime pas : ".$infos['jaimepas'];
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</div>";
?>

<div class="tendance">
<p>Tendance à <?php calctrend($id);?></p>
</div>

<?php
mysql_close();
?>
<?php //include("inc/showprofilgalerie.php"); // Fameuse ligne posant probléme ?>
<p><hr/><li><a href="inc/voteup.php?id=<?php echo $id ;?>">Voter pour ce profil.</a></li>
<li><a href="inc/styleup.php?id=<?php echo $id;?>">Ce membre a du style.</a></li>
<li>Rencontrer ce membre. Bientôt...</li></p>
	<div class="talkaboutuser">
	<p>De quoi parle <b><?php echo $infos['pseudo'];?></b> : <?php include("inc/talkaboutuser.php");?></p>
	</div>

</div>
</div><!-- fin de contenu-->





<div id="footer"><?php include("inc/footer.php");?></div>

</div> <!-- fin du corps-->
</body>
</html>

Cette page affiche donc le profil du membre dont l'id est passé en parametre... remarquer la ligne commenté qui pose probléme concernant le fichier showprofilgalerie.php fichier dont le code est décris ci-apres.

Le fichier showprofilgalerie.php :

Code:
<?php
// on verifie si l'utilisateur est logué 
if(isset($_GET['id_membre']) && $_GET['id_membre'] != null)
{

// On recupere le pseudo correspondant à l'id
include("conexion_bdd.php");
$RecPse = mysql_query("SELECT * FROM membres WHERE id_membre='".$_GET['id']."'");
$RecSPse = mysql_fetch_array($RecPse);
$pseudo = $RecSPse['pseudo'];
mysql_close();
echo "<div class='galerie'>";
echo "<H3> Son album photo...</H3>";
echo "<hr/>";
// on déclare un tableau qui contiendra le nom des fichiers de nos miniatures
$tableau = array();
// on ouvre notre dossier contenant les miniatures
$dossier = opendir ('membres/'.$pseudo.'_mini'); 
while ($fichier = readdir ($dossier)) {
    if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
        // on stocke le nom des fichiers des miniatures dans un tableau
        $tableau[] = $fichier;
    }
} 
closedir ($dossier); 

// on défini le nombre de colonne sur lesquelles vont s'afficher nos miniatures
$nbcol=2;
// on compte le nombre de miniatures
$nbpics = count($tableau);

// si on a au moins une miniature, on les affiche toutes
if ($nbpics != 0) {
    echo '<table>'; 
    for ($i=0; $i<$nbpics; $i++){ 
        if($i%$nbcol==0) echo '<tr>';  
        // pour chaque miniature, on affiche la miniature munie d'un lien vers la photo en taille réelle
        echo '<td><a href="membres/'.$pseudo.'/' , $tableau[$i] , '"><img src="membres/'.$pseudo.'_mini/' , $tableau[$i] , '" alt="Image" /></a></td>';  
        if($i%$nbcol==($nbcol-1) or $i==($nbpics-1)) echo '</tr>';  
    }  
    echo '</table>';
}
// si on a aucune miniature, on affiche un petit message :)
else 
echo 'Ce membre n\'a pas publier de photos';
echo "<hr/>";
echo "</div>";
} // fin if user logged
else
{ // l'utilisateur n'est pas loggué
echo "<div class='galerie'><h3>Erreur ! </h3><hr/>ID du membre non passé.</div>";
}
?>


Voilà j'espere que toute les informations dont vous avez besoin vous sont données, si vous avez des questions n'hésitez pas !

Merci d'avoir pris le temps de me lire

EDIT : Dernier details , tout marche parfaitement en local !
Cordialement Kent.
 
WRInaute discret
J'avais aussi rencontré ce bug , c'était dû au nom des variables , enfin , $_SESSION['variable'] aura la même valeur que $variable .
 
Nouveau WRInaute
Je pensé aussi que c'etait du au nom des variable, la variablet transmise pour le profil est id_membre et la variable de sessions $_SESSION['id_membre']; cependant j'avais changer les nom pour justement vérifié.... en vain malheureusement, mais pourquoi tout fonctionne correctement lors du premier chargement du profil, et lorsque j'actualise le bug ce produit, certaines donnée ne seré envoyé qu'au deuxiemme chargement? vraiment etrange..


Au deuxiemme chargement la valeur de $_SESSION['id_membre'] serait ecrasé par celle du profil ?
 
WRInaute discret
Bon étant trop occupé , je ne peux pas analyser tout tes codes , mais j'ai trouvé un bout de code qui pourrait écraser le pseudo :
Code:
$pseudo = $RecSPse['pseudo'];
 
Nouveau WRInaute
Effectivement c'etait ça le probléme, MERCI INFINIEMENT !!!!! Je suis nouveau sur WRI , et pas déçu ! merci beaucoup à toi !
 
Nouveau WRInaute
Arf, je viens de te répondre la même chose sur l'autre forum ( dont je taierais le nom lol ) ou tu avais posé la même question :D
 
Discussions similaires
Haut