Pb session php

Résolu
Laetitia -  
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,
après avoir faire plusieurs recherches sur les sessions, mon code ne fonctionne toujours pas !
J'ai fais session_start() sur chaque début de page (comme ci-après), mon code fonctionne quand je ne suis pas connectée mais une fois connectée, ça me met que je ne suis pas connectée! que dois-je faire?
Merci pour votre aide !

Voici une de mes page :

<?php
session_start();
//si la session n'existe pas, redirection vers index.php
if (!isset($_SESSION['nom']))
{
echo '<a href="index.php" >Veuillez vous connectez !</a>';
}
//on affiche la page voulue
else
{
?>

<HTML>
<HEAD>
<TITLE>Ajout robots</TITLE>
<link rel="stylesheet" href="include/style.css">
</HEAD>
<BODY>

<?php

include ("/var/www/function.php");
require_once ("/var/www/include/auth.inc");

$mysqlLink = connexion(HOST,USER,PWD,BDD);

$nom=$_POST['nom'];

$sql="INSERT INTO robot VALUES ('','".$nom."');";
$jeu=@mysql_query($sql,$mysqlLink);

echo '<div id="ecriture1">';

if ($jeu==true)
{
echo 'Ajout pris en compte<br/><br/>';
}
else
{
echo 'Ajout impossible <br/><br/>';
}

echo '</div>';
}
?>
</BODY>
</HTML>

6 réponses

  1. Impli Messages postés 238 Statut Membre 34
     
    Est-ce que ta variable de session "nom" est bien définie au moment de l'identification ?
    0
  2. Pilow Messages postés 410 Statut Membre 71
     
    Bonjour

    Quel est le code sur la page index.php ?
    Ou declare tu $_SESSION['nom'] lors de l'identification ?
    0
    1. Laetitia
       
      ma page index sert à l'utilisateur d'entrer son nom d'utilisateur et son mot de passe, cette identification m'envoie sur identificationbis.php et c'est dans cette page que j'ai déclaré $_
      <HTML>
      <HEAD>
      <TITLE>Menu et Planning</TITLE>
      <link rel="stylesheet" href="include/style.css">
      </HEAD>
      <BODY>


      <?php

      /* On vérifie si le nom d'utilisateur et le mot de passe entrés
      * dans "index.php" correspondent à quelqu'un dans la base. */

      include ("/var/www/function.php");
      require_once ("/var/www/include/auth.inc");

      $mysqlLink = connexion(HOST,USER,PWD,BDD);



      if (isset ($_session['nom']))
      {
      $nom=$_session['nom'];
      }

      if ($_POST['nom']!=NULL and $_POST['mdp']!=NULL)
      {
      $nom=$_POST['nom'];
      $mdp=$_POST['mdp'];
      $sql= "select * from user;";
      $jeu=@mysql_query($sql,$mysqlLink);
      while ($champ=@mysql_fetch_array($jeu))
      {
      if ($nom==$champ[2] and $mdp==$champ[3])
      {
      $_SESSION['nom']=$champ[2];

      if (isset ($_SESSION['nom']))
      {
      $conn=1;

      echo '<table>';

      echo '<tr>';
      echo '<td width="50"> <a href="stb.php" target="_blank">STB</a> </td>';
      echo '<td width="50"> <a href="user.php" target="_blank">Utilisateurs</a> </td>';
      echo '<td width="50"> <a href="firmware.php" target="_blank">Firmware</a> </td>';
      echo '<td width="50"> <a href="acces.php" target="_blank">Accès</a> </td>';
      echo '</tr>';

      echo '<tr>';
      echo '<td width="50"> <a href="robot.php" target="_blank">Robots</a> </td>';
      echo '<td width="50"> <a href="typetest.php" target="_blank">Type de test</a> </td>';
      echo '<td width="50"> <a href="reservation.php" target="_blank">Réservation</a> </td>';
      echo '<td width="50"> <a href="campagne.php" target="_blank">Campagne</a> </td>';
      echo '</tr>';

      echo '</table>';

      include ("/var/www/planning.php");



      }
      else
      {
      echo 'problème de connexion';
      }
      }
      }
      if (@$conn!=1)
      {
      echo '<div id="ecriture1">';
      echo 'Identifiant ou mot de passe incorrects !<br/><br/>';
      echo '</div>';
      }
      }
      else
      {
      echo 'problème de session';
      }

      deconnexion($mysqlLink);

      ?>


      </BODY>
      </HTML>SESSION
      0
      1. Reivax962 Messages postés 3742 Statut Membre 1 011 > Laetitia
         
        Bonjour,

        Pas de session_start() sur identificationbis.php ?

        Xavier
        0
  3. Babou-_-linet
     
    fait un
    echo $_SESSION['nom'];
    dans les pages ou tu est censée devoir etre connecté. pitetre ya un ob avant cette page
    0
  4. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Bonjour,

    Si la piste de Impli n'est pas la bonne, il faut aussi vérifier l'état de ton php.ini, et plus précisément de session.auto_start.

    C'est assez piégeux : si session_autostart vaut 1, alors la session est débutée automatiquement quand la page est appelée, sans attendre ton session_start().
    Le problème ? C'est que lancer session_start() alors qu'une session est déjà ouverte va écraser la session en cours, et les variables qui vont avec.

    Mais honnêtement, je pense comme Impli que le problème vient plutôt du moment où tu initialises ta variable de session "nom" ; moment qui n'apparaît pas dans le code que tu donnes.

    Xavier
    0
    1. Laetitia
       
      comment ça initialisé ma variable de session? désolé mais je commence avec les sessions et la je suis un peu embrouillée :s
      0
      1. Reivax962 Messages postés 3742 Statut Membre 1 011 > Laetitia
         
        Pas de panique, je parle d'un cas très particulier qui n'apparaît pas dans une installation par défaut de php ^^
        C'est une piste à investiguer si rien d'autre ne fonctionne...
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Pilow Messages postés 410 Statut Membre 71
     
    Dans ta page identificationbis.php, le session_start est inclu par les fichier auth ou fonction ou alors il n'y en a pas ?

    Car si tu met
    $_SESSION['nom'] = 'toto'

    Alors que tu n'a pas fais session_start() avant c'est pas top je crois
    0
    1. Laetitia
       
      j'en ai pas mis,
      je met juste un session_start() ou je mets
      <?php
      session_start();
      //si la session n'existe pas, redirection vers index.php
      if (!isset($_SESSION['nom']))
      {
      echo '<a href="index.php" >Veuillez vous connectez !</a>';
      }
      //on affiche la page voulue
      else
      {

      pcq j'ai essayé la deuxième solution et ça ne voulait plus offrir mon menu !
      0
      1. Pilow Messages postés 410 Statut Membre 71 > Laetitia
         
        Met le au debut de cette page alors

        Tu initialise ta variable $_SESSION['nom'] dans le vide la

        Il faut que

        1/ tu ouvre une session
        2/ tu initialise des variables dans ta session

        La tu n'a aucun session ouverte.
        0
      2. Impli Messages postés 238 Statut Membre 34 > Laetitia
         
        Un simple session_start() suffit.

        Ta page ne peut pas créer de variable de session si tu le lui précises pas dès le début qu'elle doit ouvrir une session : )
        0
      3. Laetitia > Impli Messages postés 238 Statut Membre
         
        merci beaucoup Pillow et Impli, ça fonctionne enfin !
        ça fait depuis hier que j'étais bloquée sur ce problème
        Merci beaucoup pour votre aide =)
        0
      4. Impli Messages postés 238 Statut Membre 34 > Laetitia
         
        Ravi d'avoir pu t'aider.

        N'oubli pas noter le topic comme résolu ; )
        0
  7. Impli Messages postés 238 Statut Membre 34
     
    Effectivement, il manque le session_start() sur ta page d'identification.

    @Pilow : Même si le session_start() est inclus par les fichiers, ce n'est pas correct car cette fonction doit être appelée avant tout code HTML et PHP.
    0