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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 63
    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 averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    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 averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 63
    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 averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    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 !!

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