Problème de session
Hors ligneMahcry Le 03/05/2006 à 15:22 Profil de Mahcry Configuration de Mahcry

Bonjour a tous, alors voila je vous expose mon problème,
je suis en train de creer un forum pour les besoins de mon boulot.
Bien entendu j'utilise donc un système de login avec mot de passe qui doit permettre de poster de nouveaux message sur le forum.
Le développement se passe bien et lors de mes tests en local, je n'ai eu aucun problème.

j'ai pour cela utiliser des sessions pour conserver les données dont j'ai besoin afin d'enregistrer les messages.
et voila ô grand mystère, lorsque j'ai voulu tester en ligne le forum, mes variables de session changent automatiquement.

je m'explique, si l'utilisateur n°1 poste un message, le message est enregistré comme ayant été posté par l'utilisateur n°5 (c'est un exemple hein, c'est pas toujours 1 et 5).

Bref, je me demande d'ou peut bien venir le problème, ou si quelqu'un à déja rencontré la meme chose.

Merci d'avance pour vos réponses.
Hors ligneGlougloute Le 03/05/2006 à 19:23 Profil de Glougloute Configuration de Glougloute

I love VIC
Je ne suis pas vraiment un pro, mais je pense que si tu nous donnes pas beaucoup d'infos on pourra pas t'aider.
Vérifie tes variables etc.. c'est tout ce que je peux te dire !
--
Je vous aiderai dans la mesure du possible ;)
Hors ligneMahcry Le 04/05/2006 à 09:45 Profil de Mahcry Configuration de Mahcry

bonjour, je vais vous mettre mon code, on verra si cela peut aider


le code qui verifie si le login et le mdp sont correctes


<?php
// On démarre la session
session_start();
$loginOK = false;  

// On n'effectue les traitement qu'à la condition que
// les informations aient été effectivement postées
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {

  extract($_POST);

include (
'connexion.php');
  // On va chercher le mot de passe afférent à ce login
  $sql = "SELECT * FROM utilisateurs WHERE login = '".addslashes($login)."'";
  $req = mysql_query($sql) or die('Erreur SQL :
'
.$sql);
      
  
// On vérifie que l'utilisateur existe bien
  if (mysql_num_rows($req) > 0) {
     $data = mysql_fetch_assoc($req);

    // On vérifie que son mot de passe est correct
    if ($password == $data['mdp'])
     {
      $loginOK = true;
         $_SESSION['login'] = $data['login'];
  $_SESSION['id_user'] = $data['id_user'];
  $_SESSION['droit'] = $data['droit'];
  $_SESSION['nom_user'] = $data['nom_user'];
  $_SESSION['prenom_user'] = $data['prenom_user'];
  $_SESSION['statut'] = $data['statut'];
    
     $urlprecedent
= $_POST['urlprecedent'];
       print ("<script>
     window.location.href='"
.$urlprecedent."';
     </script>"
);
    }
     else {
     $urlprecedent = $_POST['urlprecedent'];
    print ("<script>
     alert ('Identification incorrecte, veuillez vérifier vos identifiants');
     window.location.href='"
.$urlprecedent."';
     </script>"
);
     }
  }
}
// Si le login a été validé on met les données en sessions
?>



le code pour poster un nouveau message


      <form name="NewMessage">
Poster un nouveau message<br/>
     <textarea name="nouveauMessage"  ROWS="4" COLS="50"></textarea>
     <input type="hidden" name="urlprecedent" value="<?php echo $_SERVER['REQUEST_URI'];?>"
>
     <input type="hidden" name="id_sujet" value="<?php echo $id_sujet;?>">
     <input type="hidden" name="id_user" value="<? echo $_SESSION['id_user']; ?>">
     <p><div align="center"><input type="button" value="Poster" onClick="FonctionMessage()"/></p>
       </form>



et enfin, le code qui enregistre le message

<?php
// On appelle la session
session_start();

$urlprecedent = $_POST['urlprecedent'];

     //Test s'il estconnecté
     if (isset($_SESSION['id_user']) )
     {
     php include('connexion.php')

               if (isset($_POST['id_sujet']) AND isset($_POST['nouveauMessage']))
               {
                    $message = htmlentities(addslashes($_POST['nouveauMessage']));
                    $id_user = $_SESSION['id_user'];
                    $id_sujet = $_POST['id_sujet'];
                    
                     $insertionMessage
= "INSERT INTO `messages` ( `message`,`date_message`,`heure_message`,`id_sujet`,`id_user` )
                    VALUES('$message' , NOW( ) ,CURTIME( ), '$id_sujet', '$id_user')"
;
                    mysql_query($insertionMessage) or die(mysql_error());
                    
                    mysql_close
(); // Déconnexion de MySQL
                    print ("<script>
                    alert ('Votre message à bien été enregistré ');
                    window.location.href='"
.$urlprecedent."';
                    </script>"
);
               }
               else
               {
                    print ("<script>
                    alert ('Une erreur est survenue, veuillez recommencer');
                    window.location.href='"
.$urlprecedent."';
                    </script>"
);
               }
     }
     else
     {
          print ("<script>
          alert ('Vous devez au préalable vous identifier afin de pouvoir laisser un message sur le forum');
          window.location.href='"
.$urlprecedent."';
          </script>"
);
     }
?>



Voila voila, merci pour l'aide que vous pourrez m'apporter
Hors ligneSalva Le 07/05/2006 à 19:55 Profil de Salva Configuration de Salva

Bonjour,

je ne suis pas spécialiste en Php mais as tu vérifié que le problème ne vient pas de ton hébergeur? Car je crois que suivant les hébergeurs, certains n'active pas toutes les possibilités pour des questions de sécurité entre autre.

Bon courage.
Hors ligneAnthony Le 07/05/2006 à 22:46 Profil de Anthony Configuration de Anthony

Admin
Salut,

je ne vois pas d'où pourrait venir le problème, tes utilisateurs se connectent bien à partir d'ordinateurs différents ? pense à bien supprimer une éventuelle session avant d'en créer une autre dans ta page de connexion.

a +
--

Hors ligneMahcry Le 09/05/2006 à 14:43 Profil de Mahcry Configuration de Mahcry

Bonjour a tous,
et bien voila, c'était une variable qui faisait la méchante, elle était utilisé ailleurs
et donc cassé un peu le code

Bref en changeant son nom, le problème est résolu.
merci a ceux qui ont pris le temps de me répondre et de m'aider
bonne journée a tous
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels