Pb session php

Résolu
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. 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.
    1. 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
      1. 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 !
      2. @LaetitiaMet 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.
      3. @LaetitiaUn 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 : )
      4. @Implimerci 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 =)
      5. @LaetitiaRavi d'avoir pu t'aider.

        N'oubli pas noter le topic comme résolu ; )
    2. 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
      1. comment ça initialisé ma variable de session? désolé mais je commence avec les sessions et la je suis un peu embrouillée :s
      2. @LaetitiaPas 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...
    3. fait un
      echo $_SESSION['nom'];
      dans les pages ou tu est censée devoir etre connecté. pitetre ya un ob avant cette page
      1. Bonjour

        Quel est le code sur la page index.php ?
        Ou declare tu $_SESSION['nom'] lors de l'identification ?
        1. 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
        2. @LaetitiaBonjour,

          Pas de session_start() sur identificationbis.php ?

          Xavier
      2. Est-ce que ta variable de session "nom" est bien définie au moment de l'identification ?