IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

variable de Session non trouvée


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut variable de Session non trouvée
    Bonjour,

    Je viens vers vous car là je n'arrive pas à voir ce qui cloche dans ma variable de session qui me renvoi toujours le message d'erreur suivant :
    Notice: Undefined index: login in C:\wamp\www\siteFormationPhP-MySQL\cadreDroit.php on line xx
    Les erreurs sont sur les 2 lignes du script de la page "cadreDroit.php" ou je fait référence à la variable de session "login"

    J'ai dans ma page index.php les script suivants :
    En début de page je démarre ma session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php session_start();
    	// appel de la page des paramètres de connexions 
    	include("connect/conConfig.php");
    ?>
    Puis dans ma page je fais un include de ma page qui contient le formulaire de connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    	include("cadreDroit.php");
    ?>
    puis dans la page cadreDroit.php j'ai le formulaire qui affiche un menu différents suivant si le login est "admin ou membre"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    <?php
     
    // on test si le visiteur à soumis le formulaire de connexion
    if(isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion')
     {
       if((isset($_POST['loginF']) && !empty($_POST['loginF'])) && (isset($_POST['mdp']) && !empty($_POST['mdp'])))
      {
     
    // on teste si une entrée de la base contient ce couple login / pass
    $sql="SELECT count(*) FROM membre WHERE login='".mysql_escape_string($_POST['loginF'])."' AND pass_md5= '".md5(mysql_escape_string($_POST['mdp']))."'";
     
    $req = mysql_query($sql) or die ('Erreur SQL!<br />'.$sql.'<br />'.mysql_error());
     
    $data = mysql_fetch_array($req);				
    mysql_free_result($req);
    mysql_close();
     
    // si on ne trouve aucune réponse, alors l'utilisateur est un membre
    if($data[0]==1){
    	$_SESSION['login'] = $_POST['loginF'];
    }
     
    // si on ne trouve aucune réponse,le visiteur s'est trompé soit dans sont login, soit dans son mot de passe
    elseif($data[0]==0){
    	$erreur='Compte non reconnu';
    }
    // sinon, il y a un problème
    else{
    	$erreur='Membres avec le même identifiants';
         }
    }else{
           $erreur='Au moin un des champs est vide';
           }
    }
    ?>
    <?php
    echo $_SESSION['login'] .'</br>';
     if (($_SESSION['login']) == "admin")
    {
    // echo "<h1 class='txtLg'>Espace membre</h1>";
    echo '
    <h1 class="txtLg">Espace administrateur</h1>
      <div id="cadreMbre">
          <ul class="ulh">
               <li>Gestion
                <ul>
                 <li><a class="ali" href="inscription.php">Inscription</a></li>
                 <li><a class="ali" href="suppression.php">Suppression</a></li>
    	     <li><a class="ali" href="liste.php">Voir les news</li>
    	     <li><a class="ali" href="news.php">Ajouter une news</a></li>
    	     <li><a class="ali" href="afficher.php">Liste des sites</a></li>
    	     <li><a class="ali" href="site.php">Ajouter un site</a></li>
                 <li><a class="ali" href="deconnexion.php">D&eacute;connexion</a></li>
                </ul>
            </li>
         </ul>
      </div>
        '; 
     
    /* header("Location: membre.php"); renvoi sur la page désirée */
    }elseif ($_SESSION['login'])
    {
      echo '
               <h1 class="txtLg">Espace membre</h1>
               <div id="cadreMbre">
    	      <ul class="ulhB">
                       <li>Gestion
                   		<ul>
    			      <li><a class="ali" href="liste.php">Voir les news</a></li>
                   		      <li><a class="ali" href="news.php">Ajouter une news</a></li>
    			      <li><a class="ali" href="afficher.php">Liste des sites</a></li>
                                  <li><a class="ali" href="site.php">Ajouter un site</a></li>
    			      <li><a class="ali" href="deconnexion.php">D&eacute;connexion</a></li>
                   		</ul>
                   	    </li>
                   </ul>
              </div>
    	 '; 
    }else { 
     ?>
    <h1 class="txtLg">Connection</h1>
      <span class="txtalert">
    <?php 
       if(isset($erreur)) echo $erreur;
    ?>
    </span>
     
    <form class="bdr" method="post" name="identification">	
    	<table class="cdrHt" width="196" border="0" align="center" cellpadding="0" cellspacing="10">
                 <tr>
                       <td class="txtLg2" width="69">Login :</td>
                       <td width="97"><input class="chpLog" name="loginF" type="text" size="15" maxlength="20" /></td>
                 </tr>
                       <tr>
                           <td class="txtLg2">Password :</td>
                           <td><input class="chpLog" name="mdp" type="password" size="15" maxlength="20" /></td>
                 </tr>
                 <tr>
                 <td class="alignC" colspan="2"><input name="connexion" type="submit" class="txtLg3" value="Connexion" /></td>
                  </tr>
         </table>
    </form>
    </div>
    Donc visiblement il ne trouve pas la variable login quand ma page index.php est appelé sans aucun champ du formulaire soit rempli (bizar !!) et pourtant je démarre bien ma session en début de page avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php session_start(); ?>
    Juste une dernière précision j'utilise WAMPSERVER 2.0f (la dernière version)
    tout est configuré d'origine rien modifié.
    Merci de votre aide !!

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    Si ton login est vide il ne rentre pas dans ta boucle donc $_SESSION['login'] n'ai pas crée donc erreur quand tu veux l'afficher.

    Cette ligne marche ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    }elseif ($_SESSION['login'])
    $_SESSION['login'] n'ai pas un booleen donc il manque une égalité je pense...

    De plus si tu passes alors que l'un des champs et vide, cette condition ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else{
           $erreur='Au moin un des champs est vide';
           }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    dans ma condition je regarde quelle valeur à la variable "$_SESSION['login']"
    au démarrage la variable login n'a pas de valeur donc dans ma condition (if) je regarde la valeur de login si aucune valeur j'affiche le formulaire de connexion.

    J'ai pas de problème quand je me suis authentifier (la variable login possède une valeur) mais c'est au démarrage que j'ai ces 2 erreurs !!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    je pensé avoir trouver mais visiblement cela ne fonctionne pas correctement si je met 'isset' devant ma variable de session "login" dans ma condition.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (isset($_SESSION['login']) == "admin")
    {
       le code 1 ....
    }
    elseif (isset($_SESSION['login']) !='')
    {
       le code 2 ...
    }
    Si il reconnait admin comme valeur de la variable de session "login" il exécute bien le code 1
    Mais si la variable de session "login" est différent le code 2 n'est pas exécuté mais bien le code 1

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    isset test l'existence et renvoi soit vrai soit faux.

    essai plutot quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    if (!empty($_SESSION['login']) && $_SESSION['login']== "admin")
    {
       code 1 ...
    }
    else
    {
       if(empty($_SESSION['login']))
       {
       code 2...
       }
       else
       {
       .......
       }
     
    }

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Bon cela fonctionne bien maintenant j'ai ajouter un "!" au second if(!empty($_SESSION['login']))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    if (!empty($_SESSION['login']) && $_SESSION['login']== "admin")
    {
       code 1 ...
    }
    else
    {
       if(!empty($_SESSION['login']))
       {
       code 2...
       }
       else
       {
       code 3 (formulaire de connexion)...
       } 
    }
    Le truc que je ne comprends pas c'est qu'avant ce code fonctionnais correctement, et là vue que j'ai installer WampServer 2.0f cela ne marche plus et je ne comprends vraiment pas pourquoi !!

    Merci de votre aide !!

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je pense que ce n'est pas tant une question de "ça ne marche plus" qu'un question de "ça m'affiche des erreurs que je n'avais pas avant".
    Le message que tu obteins est une notice, à savoir le niveau le plus léger des erreurs de php. Une notice signale une erreur non fatale, n'entrainant pas nécessairement de dysfonctionnement du code. En d'autres termes, ça te dit qu'il y a un truc pas propre dans ton code et que php ne peut pas garantir que ça soit normal.

    Je pense qu'en installant un nouveau serveur, tu es tout simplement activé l'affichage des notices, qui n'était sans doute pas actif sur ton serveur précédent.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Réponses: 27
    Dernier message: 16/04/2013, 11h09
  2. Variable de sessions non transférées
    Par MaT$oN dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2008, 14h04
  3. Variables de sessions non transmises en local
    Par cerveza dans le forum Langage
    Réponses: 5
    Dernier message: 31/12/2007, 21h34
  4. Variable de session non rafraîchie
    Par Akela dans le forum Langage
    Réponses: 6
    Dernier message: 17/10/2007, 15h44
  5. Variable de session pas trouvée
    Par Alexandrebox dans le forum Langage
    Réponses: 4
    Dernier message: 13/03/2007, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo