8791 sujets

Développement web côté serveur, CMS

Pages :
bonjour,
j'ai un petit probleme de session dans ma zone de messages privés, quand je veux delete un message, aprés avoir confirmer la suppression ca me deco de ma session je comprends pas pourquoi voici mes codes :


case "supprimer":
$listeMessages = $_POST['id'];
?>
 
<form action="supprimer.php" method="post">
  <p>
<?php foreach($listeMessages as $id => $value) { ?>
    <input type="hidden" name="id[]" value="<?php echo $value; ?>" />
<?php } ?>
    Etes-vous sûr de vouloir supprimer tout ça ?
  </p>
  <div>
     <input type="submit" value="Confirmer" />
     <a href="message.html">Annuler</a>
  </div>
</form>
 
 
 
<?php
break;
//Si rien n'est demandé ou s'il y a une erreur dans l'url 
//On affiche la boite de mp.
default:
 
   echo'<p align="center"><font face="comic sans ms" size="2"><a href="./index.php"><img src="../images/accueil.png" alt="accueil" 
  title="accueil" /></font></a></p>';
       
   $requete  = mysql_query('SELECT mp_lu, mp_id, mp_expediteur, mp_titre,
  mp_time, membre_id, membre_pseudo
  FROM zone_mp
  LEFT JOIN zone_membres ON zone_mp.mp_expediteur = zone_membres.membre_id
  WHERE mp_receveur = '.$_SESSION['id'].' ORDER BY mp_id DESC')
   or die(mysql_error());
 
   echo'<p align="center"><font face="comic sans ms" size="2"><a href="./messagesprives.php?action=nouveau">
  <img src="../images/nouveau.png" alt="Nouveau" title="Nouveau message" />
  </font></a></p>';
   if (mysql_num_rows($requete) > 0)
   {
        ?>
                <form action="messagesprives.php?action=supprimer" method="post">
        <table>   
        <tr>
        <th></th>
        <th id="mp_titre"><font face="comic sans ms" size="2">Titre</font></th>             
        <th id="mp_expediteur"><font face="comic sans ms" size="2">Expéditeur</font></th>
        <th id="mp_time"><font face="comic sans ms" size="2">Date</font></th>   
        <th><font face="comic sans ms" size="2">Action</font></th>
                <th><font face="comic sans ms" size="2">Delete Check</font></th>
        </tr>
                           
        <?php
        //On boucle et on remplit le tableau
        while ($data = mysql_fetch_assoc($requete))
        {
        echo'<tr>';
        //Mp jamais lu, on affiche l'icone en question
        if($data['mp_lu'] == 0)
        {
        echo'<td><img src="../images/msg_non_lu.png" alt="Non lu" title="Non lu" /></td>';
        }
        else //sinon une autre icone
        {
        echo'<td><img src="../images/msg_lu.png" alt="Déja lu" title="Déja lu" /></td>';
        }
        echo'<td id="mp_titre">
      <font face="comic sans ms" size="2"><a href="./messagesprives.php?action=consulter&amp;id='.$data['mp_id'].'">
      '.$data['mp_titre'].'</font></a></td>
      <td id="mp_expediteur">
     <font face="comic sans ms" size="2"><a href="./voir_profil.php?action=consulter&amp;m='.$data['membre_id'].'">
      '.$data['membre_pseudo'].'</font></a></td>
      <td id="mp_time"><font face="comic sans ms" size="2">'.date('H\hi \l\e d M Y',$data['mp_time']).'</font></td>
      <td>
<font face="comic sans ms" size="2"><a href="./messagesprives.php?action=supprimer&amp;id='.$data['mp_id'].'&amp;sur=0">
         Supprimer</font></a></td>
                <td>
                <input type="checkbox" name="id[]" value="'.$data['mp_id'].'" /> Message Numero '.$data['mp_id'].'</td></tr>';
        }
           echo ' <input type="submit" value="Supprimer"/>';
       echo '</table><br/>';


et ma page supprimer.php



<?php 
session_start();
 
include("identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
 
 
foreach($_POST['id'] as $key => $value)
{
 mysql_query('DELETE FROM zone_mp WHERE mp_id = '.$value.'');
 
}
header('Location: messagesprives.php');
 
mysql_close();
 
?>


si quelqu'un pouvait mexpliquer pourquoi ca me fait ca merci
Salut,

vérifie à tout hasard que tu n'as pas d'espace blanc (ou un autre caractère) avant <?php
Modifié par Ralfman68 (14 Oct 2007 - 10:07)
Bonjour,

Tes messages sont quand meme supprimer ou non ? comme cela tu auras sans doute une indication.

Ensuite je te conseil de t'amuser a faire des echo $_SESSION un peu partout pour verifier ou se trouve ta déconnexion de session.

Si cela a lieu sur ta page de suppression verifie que dans ta page inclus tu ne réinitialise pas tes sessions.

Et tu aurais un beau message d'erreur si tu avais un espace avant d'utiliser les sessions.
Salut,

si ta page appelante (à priori messagesprives.php) contient bien session_start() avant toute écriture html il n'y a aucune raison de perdre la session Smiley rolleyes ...

Mais d'ailleurs qu'est-ce qui te fait dire que ta session est déconnectée ?
oui le message se supprime bien Halindel j'ai tester un peu partout je vois pas ou je pourrais déconnecter, j'ai bien 2 session_start(); sur mes 2 pages, mais je pensais comme j'ai fait un switch sur la premiere page ca vient peut etre de là ou ca a rien avoir du tout....
Heyoan ben en faite quand j'efface le message ca me renvoi sur ma page des messages prives et quand je vois la liste des membres je vois:

Dyphen: déconnecter

alors que avant de delete le message c'était marqué

Dyphen: connecté
Et le message connecté/déconnecté dépend bien d'une variable de session ?

Tu pourrais montrer ton code ?

PS : le switch n'a aucun lien avec les sessions Smiley cligne
Modifié par Heyoan (15 Oct 2007 - 14:50)
oki en faite c'est sur ma page memberlist.php qu'on voit les membres connecté je te montre ca :*



[code]

<?php
echo'<p align="center"><font face="comic sans ms" size="3"><a href ="./index.php"><img src="../images/accueil.png" alt="accueil" title="accueil" /></a> <br/>
<a href="./memberlist.php">Liste des membres</font></a></p><hr><br/>';

if (isset($_SESSION['pseudo'])) // Si le membre est connecté
{
		$requete  = mysql_query('SELECT COUNT(*) nb
        FROM zone_mp
        WHERE mp_lu = "0" AND mp_receveur = '.$_SESSION['id'].'')
        or die(mysql_error());
        $data = mysql_fetch_assoc($requete);

        //Voici les options
        echo'<p align="center"><span class="gestion"><font face="comic sans ms" color="white"> Gestion membres </font></span></p>
		<div class="config"><p align="center"><font face="comic sans ms" size="3" color="white"><fieldset>Vous êtes connecté en tant que
        <a href="./voir_profil.php?m='.$_SESSION['id'].'&action=consulter">
        <font face="comic sans ms" size="3" color="fuchsia">'.$_SESSION['pseudo'].'</font></a><br /><hr>
        <a href="./voir_profil.php?action=modifier"><font color="white">Modifier mon profil</font></a><br /><hr>';
		
		if ($data['nb'] == 0)
		echo'<a href="./messagesprives.php"><font color="white">Consulter mes messages privés </font></a><br /><hr>'; 
		else
		echo' <a href="./messagesprives.php"><font color="white">Consulter mes messages privés <span class="blink"><font color="red"> ( '.$data['nb'].' New) </font></span></font></a><br /><hr>'; 
		

        echo '<a href ="./deconnexion.php"><font color="white">Se déconnecter</font></fieldset></font></a><br /></p></div><br/><hr>';
	
}
// Sinon, on propose de se connecter ou de s'enregistrer
else
{
        echo'<div class="config"><p align="center"><font face="comic sans ms" size="3" color="white"><fieldset> <font color="red"><u>/!\</u></font>  Vous n êtes pas connecté <font color="red"><u>/!\</u></font> </font><br /><hr>
        <a href="./connexion.php"><font face="comic sans ms" color="white">Se connecter</font></a><br /><hr>
        <a href="./register.php"><font face="comic sans ms" color="white">Pas encore inscrit ?</font></fieldset></a><br /></p></div><br/><hr>';
}
//Nombre de pages

if (isset($_GET['page']))
{
$page = intval($_GET['page']);
}
else
{
$page = 1;
}
//On affiche les pages 1-2-3, etc.
echo '<p align="center"><font face="comic sans ms" size="2">Page : ';
for ($i = 1 ; $i <= $NombreDePages ; $i++)
{
    if ($i == $page) //On ne met pas de lien sur la page actuelle
    {
    echo $i;
    }
    else
    {
    echo '<p align="center"><a href="memberlist.php?f='.$forum.'&amp;page='.$i.'">'.$i.'</a></p>';
    }
}


$premier = ($page - 1) * $MembreParPage;

//Le titre de la page
echo '<p align="center"><font face="comic sans ms" size="3" color="navy">Liste des membres</font></p>';

//Tri

$convert_order = array('membre_pseudo', 'membre_inscrit', '-membre_derniere_visite'); 
$convert_tri = array('ASC', 'DESC');
//On récupère la valeur de s
if (isset ($_POST['s'])) $sort = $convert_order[$_POST['s']];
else $sort = $convert_order[0];
//On récupère la valeur de t
if (isset ($_POST['t'])) $tri = $convert_tri[$_POST['t']];
else $tri = $convert_tri[0];

?>
<form action="memberlist.php" method="post">
<p><label for="s"><p align="center">Trier par : </label>

<select name="s" id="s">
<option value="0" name="0">Pseudo</option>
<option value="1" name="1">Inscription</option>
<option value="2" name="2">Dernière visite</option>
</select>

<select name="t" id="t">
<option value="0" name="0">Croissant</option>
<option value="1" name="1">Décroissant</option>
</select>
<input type="submit" value="Trier" /></p>
</form>
<?php
//Requête

$requete2 = mysql_query('SELECT membre_id, membre_pseudo, membre_inscrit, membre_derniere_visite, online_id
FROM zone_membres
LEFT JOIN zone_whosonline ON online_id = membre_id
ORDER BY '.$sort.', online_id '.$tri.'
LIMIT ' . $premier . ', ' . $MembreParPage .'')
or die (mysql_error());

if (mysql_num_rows($requete2) > 0)
{
?>
       <table>
       <tr>
       <th class="pseudo"><font face="comic sans ms" size="2" color="fuchsia">Pseudo</font></th>             
       <th class="inscrit"><font face="comic sans ms" size="2" color="fuchsia">Inscrit depuis le</font></th>
       <th class="derniere_visite"><font face="comic sans ms" size="2" color="fuchsia">Dernière visite</font></th>                       
       <th><font face="comic sans ms" size="2" color="fuchsia">Connecté</font></th>             

       </tr>
       <?php
       //On lance la boucle
       
       while ($data2 = mysql_fetch_assoc($requete2))
       {
       echo '<tr><td><strong>
       <a href="./voir_profil.php?m='.$data2['membre_id'].'&amp;action=consulter">
       '.$data2['membre_pseudo'].'</strong></a></td>
       <td><strong>'.date('d/m/Y',$data2['membre_inscrit']).'</strong></td>
       <td><strong>'.date('d/m/Y à H\hi ',$data2['membre_derniere_visite']).'</strong></td>';
       if (empty($data2['online_id'])) echo '<td><strong><font color="blue">non</font></strong></td>'; 
       else echo '<td><strong><font color="red">oui</font></strong></td>'; // c est ici qu on voit si on est connecté ou non
       echo '</tr>';
       }
       ?>
       </table>
	   <br/>
	   <hr>
       <?php
}
else //S'il n'y a pas de message
{
        echo'<p>UnderGr0unD ne contient aucun membre actuellement</p>';
}
?>


je t'ai mi une bonne partie lol et je te montre juste la partie de mon code ou ca dit que le membre est connecté ou non, la page a bien un session_start(); en haut

désolé pour le flood d'avoir poster 3 messages ma connexion merdait jai fait plusieurs fois refresh
Modifié par Dyphen (15 Oct 2007 - 15:02)
Dyphen a écrit :
quand j'efface le message ca me renvoi sur ma page des messages prives et quand je vois la liste des membres je vois:

Dyphen: déconnecter

Euh... je vois pas bien le lien entre ta page "messages privés" et memberlist Smiley rolleyes ?
Je poursuit ceux que dit Heyoan Smiley lol

Sinon ton message disparai ou ?? car cela pourrai être utile pour trouver l'origine. Tu as dit que tu l'avais tester partout, donc tu dois bien savoir s'il apparait au debut de ta page de suppression ou non ? a partire de la tu auras une information supplémentaire...
je t'explique mieux je me suis mal exprimé désolé

donc en faite quand on s'authentifie, on arrive sur la page memberlist.php avec un menu composé de :

vous etes connecté en tant que Dyphen
modifier mon profil
consulter mes messages privés
se deconnecter

quand je clique sur " consulter mes messages privés " j'arrive sur la page messagesprives.php

et la suppression passe par suppression.php mais je viens de voir qu'a la fin de mon code messagesprives.php, y'a un mysql_close(); ca vient peut etre d'ici ? ( je pense pas )

mon message disparait quand je clique sur confirmer ca me renvoi sur ma page messages prives.php et a ce moment la !! je suis deco de la session..
Tu as raison cella ne vient pas du mysql_close().

Je suppose que tu inclus toute tes pages ? a parti de ton index.php ou un truc comme cela Smiley lol

Verifie si tu n'appel pas ou que tu ne remplace pas tes variables de session sans faire attention. Car ton se deconnecter de ton menu doit appeler une fonction qui doit supprimer tes variable de de session ?
Quand tu dis "je suis deco de la session" est-ce que cela veut dire qu'après le delete tu es sur renvoyé sur la page messages privés mais qu'un test vérifie que tu es connecté et comme tu ne l'es pas tu es renvoyé vers memberlist ?

Si c'est le cas il faudrait voir le test...

Sinon le mysql_close n'a pas non plus de lien avec les sessions...

Autresinon, il me semble qu'il va te falloir te résoudre à ce que proposait Halindel : faire des echo $_SESSION['pseudo'] après chacun de tes session_start() Smiley murf
heu aprés le delete je suis renvoyé sur ma page messagesprivés.php et quand je clique sur "retour sur la gestion " la page memberlist.php la je vois que je suis deconnecté

ma page de deconnexion est comme ca :



<?php
session_start();
session_destroy();

header('Location: '.$_SERVER['HTTP_REFERER'].'');
echo '<p align="center">Vous êtes à présent déconnecté <br />



mais bon rien avoir avec mon probleme puisqu'il faut que je clique sur se deconnecter pour executer ce code je vais essayé de faire des echo session comme dit Halindel

j'ai du relire mon code 50 fois j'ai vu nulle part ou je remplacais les variables de session donc je me demande vraiment d'ou le probleme peut venir...
bon j'ai mis des echo session partout comme vous avez dit

donc sur ma page messagesprives.php c'était bien affiché Dyphen, sur la page de confirmation aussi , et sur la page suppression.php, Dyphen était aussi bien affiché, j'ai fait comme ca pour la page suppression.php



<?php 
session_start();
echo $_SESSION['pseudo'] 

//include("identifiants.php");
//mysql_connect($adresse, $nom, $motdepasse);
//mysql_select_db($database);


//foreach($_POST['id'] as $key => $value)
//{
 //mysql_query('DELETE FROM zone_mp WHERE mp_id = '.$value.'');

//}
//header('Location: messagesprives.php');
 

?>


donc là ca a pas effacer le message logique, ya juste mon pseudo qui s'est affiché je reviens en arriere, sur memberlist.php c'était marqué que j'étais deconnecter de la session

la je comprends VRAIMENT RIEN
Bon alors dans ce cas il n'y as plus que une seul raison Smiley lol tu as raté ton codage un endroit, qui efface ou annule ta variable de session. Car si tu as laisser le echo $_SESSION sur tes pages lors de ton teste tu auras peut etre remarquer que lors de ton retour ton nom ne s'afficher plus sur memberlist.php Tu as du rater juste une petit condition je pense.

Verifie tes sessions en mettant ton echo un peu partout Smiley lol (je sais c'est chiant mais c'est la seul façon de debuguer. Car si j'ai bien sur sur d'autre topic ta page memberlist.php contient beaucoup de code.... et donc il sera facile d'un petit oubli dedans.

Si cela ne se passe que lors de la suppression tu auras déjà une petit idée ou chercher je pense.
powaaaa je vais devenir fou -_-

je viens de remettre un echo session partout !

donc Dyphen reste affiché partout ! quand j'ai delete le message je reviens sur messagesprivés.php avec la fonction header et il y avait toujours Dyphen en haut et sur memberlist.php aussi, alors que je peux plus envoyé mes messages, que ca dit que je suis plus connecté et que je puisse plus modifier mon profil , c'est pour ca que jen conclu que je suis deco de la session..
Mhhh on avance, (enfin je pense.) Donc le probleme ne vient pas de tes pages cités mais plutôt de la page principal, ou se trouve ton menu.

Dit moi ton site est construit sur une page qui inclut toute les autres ou bien tu as un page pour chaque chose ? et tu inclus le menu ? explique un peu mieux l'organisation de ton site si tu le peux comme cela on pourra avoir un aperçu de celui ci.
Pages :