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 :

[Sécurité] Problème de variables de session


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut [Sécurité] Problème de variables de session
    bonjour

    j'ai ma page de login dans lequel je verifie si l'utilisateur est connu et si il a le bon mot de passe. Si c'est le bon je mémorise dans les variables de session comme j'ai trouvé dans un tuto, toutes ces informations.

    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
    <?
    require("include/connect.php");
    // pensez a ouvrir une connexion vers mysql ici
    // voir les exercices dans le menu de droite pour cela.
     
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
    {
      extract($_POST);
      // on recupère le password de la table qui correspond au login du visiteur
      $sql = "select * from user where Login_user='".$login."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      $data = mysql_fetch_assoc($req);
     
      if($data['Mdp_User'] != $pass)
      {
        echo '<p>Mauvais login / password. Merci de recommencer</p>';
      }
      else
      {
          $_SESSION['Nom_User'] = $data['Nom_User'];                        //
        $_SESSION['Prenom_User'] = $data['Prenom_User'];                //
        $_SESSION['Service_User'] = $data['Service_User'];                //On sauvegarde les informations de 
        $_SESSION['Email_User'] = $data['Email_User'];                    //l'utilisateur dans les variables de sessions
        $_SESSION['Tel_User'] = $data['Tel_User'];                        //
        $_SESSION['Last_Connect_User'] = $data['Last_Connect_User'];    //
        header('Location: index2.php');                                    // permet de charger la page du site apres authentification
      }   
    }
    else 
    {
      echo '<p>Vous avez oublié de remplir un champ.</p>';
    }
    ?>
    Selon le tuto dans chaque page il fallait inclure ceci afin de garder la session ouverte pour chaque page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?
    session_start();
    /*
    si la variable de session login n'existe pas cela siginifie que le visiteur
    n'a pas de session ouverte, il n'est donc pas logué ni autorisé à
    acceder à l'espace membres
    */
    if(!isset($_SESSION['login'])) {
      echo 'Vous n\'êtes pas autorisé à acceder à cette zone';
      include('index.php');
      exit;
    }
    ?>
    Ainsi donc je l'inclus dans chaque page.

    pour tester si mes variable passaient j'ai mis ceci dans une autre page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?
            echo 'nom : ',$_SESSION['Nom_User'],'<br />
                  prenom : ',$_SESSION['Prenom_User'],'<br />';
    ?>
    Mais les variables ne passe pas, j'ai des erreures.

    nom :
    Notice: Undefined index: Nom_User in c:\program files\easyphp1-8\www\intranet\index2.php on line 74

    prenom :
    Notice: Undefined index: Prenom_User in c:\program files\easyphp1-8\www\intranet\index2.php on line 75


    alors que su la page ou ce fait le login ca marche.

    est ce que j'ai oublié quelque chose ou j'ai mal fais quelque chose?

    amicalement

  2. #2
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Bonjour,

    essayes ça dans cette page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <? session_start();
            echo 'nom : ',$_SESSION['Nom_User'],'<br />
                  prenom : ',$_SESSION['Prenom_User'],'<br />';
    ?>

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 82
    Par défaut
    Ton code est bon pour les variables de session par contre fait un echo lorsque tu récupère tes valeurs depuis SQL pour vérifier si elles ont bien une valeur

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut
    c'est une reponse plus que rapide...

    mais ca ne marche toujours pas, voila ce que ca me mets.

    Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\intranet\index2.php on line 74
    nom :
    Notice: Undefined index: Nom_User in c:\program files\easyphp1-8\www\intranet\index2.php on line 75

    prenom :
    Notice: Undefined index: Prenom_User in c:\program files\easyphp1-8\www\intranet\index2.php on line 76



    oui oui j'ai fais un echo apres les avoir enregistré et elle sont bien passée.

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 82
    Par défaut
    il faut concaténer ta chaine :
    echo 'nom : '.$_SESSION['Nom_User'].'<br />

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut
    Parse error: parse error in c:\program files\easyphp1-8\www\intranet\index2.php on line 86


    si je recopie excatement ce que tu ma marqué dans ma deuxieme page.

  7. #7
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    ok je me suis planté j'avais pas lu que tu incluais ton session_start() partout...

    tu l'inclues où ton dernier fichier ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut
    bin j'ai mon index.php qui permet a l'utilisateur de se loguer.

    qui ouvre l'index2.php et tout en haut de mon index2.php j'inclu le fichier qui verifie les sessions.

    c'est ca que tu veux savoir?

  9. #9
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    montre nous ton index2.php stp

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 82
    Par défaut
    tu as remplacer tes virgules par des point sinon ca ne peut pas marcher

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut
    voila

    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
    <?
    include('verif_login.php');
    ?> 
     
    <html>
    <head>
     <title>Site Intranet </title>
           <link rel="shortcut icon" href="!!favicon.ico" >
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
           <link rel="stylesheet" media="screen" type="text/css" title="Site Intranet" href="style.css" />
    </head>
     
    <center><body>
     
     <div id="page">
     
                <!-- en tête -->
        <div id="en_tete">
     
        Site Intranet    
     
        </div>
     
                <!-- menu -->
        <div class="menu">
        <table>
            <tr>
                <td>
                   <ul>
                       <li><a href="index2.php?page=Accueil.php">Accueil</a></li>
                       <li><a href="index2.php?page=Achat">Achat</a></li>
                       <li><a href="index2.php?page=Commercial">Commercial</a></li>
                       <li><a href="index2.php?page=Comptabilite">Comptabilité</a></li>
                       <li><a href="index2.php?page=Direction">Direction</a></li>
                       <li><a href="index2.php?page=Expedition">Expédition</a></li>
                       <li><a href="index2.php?page=Maintenance">Maintenance</a></li>
                       <li><a href="index2.php?page=Process">Process</a></li>
                       <li><a href="index2.php?page=Production">Production</a></li>
                       <li><a href="index2.php?page=Qualite">Qualité</a></li>
                   </ul>
                </td>
            </tr>
        </table>    
       </div>
     
     
                <!-- corps -->
        <div id="corps">
     
    <?php
     
      // On définit le tableau contenant les pages autorisées
      // ----------------------------------------------------
      $pageOK = array('Accueil'=>'Pages/accueil.php',
                      'Achat'=>'Pages/achat.php',
                      'Commercial'=>'Pages/commercial.php');
     
      // On teste que le paramètre d'url existe et qu'il est bien autorisé
      // -----------------------------------------------------------------
      if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
        include($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
      } else {
        include('Pages/accueil.php');   // Page par défaut quant elle n'existe pas dans le tableau
      }
     
    ?>
        </div>
     
                <!-- pied de page -->
     
        <div id="pied_de_page">
        <p>Copyright<br/>
     
    <? session_start();
            echo 'nom : ',$_SESSION['Nom_User'],'<br />
                    prenom : ',$_SESSION['Prenom_User'],'<br />';
    ?>
        </p>
        </div>
     
     </div>
    </body></center>
     
    </html>

  12. #12
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Déjà comme le dit notre collegue concatene avec des . et pas des , et enleve le session_start.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <? 
            echo 'nom : '.$_SESSION['Nom_User'].'<br />
                    prenom : '.$_SESSION['Prenom_User'].'<br />';
    ?>
    Est ce que dans ton fichier de login tu as session_start() ?

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut
    bête et discipliné j'ai fais comme dans les tutos que j'ai trouvé. etant donnée que j'apprend c'ets pas facile de detecter les erreures.

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut
    mon fichier de 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
    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
    <?
    require("include/connect.php");
    // pensez a ouvrir une connexion vers mysql ici
    // voir les exercices dans le menu de droite pour cela.
     
    if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass']))
    {
      extract($_POST);
      // on recupère le password de la table qui correspond au login du visiteur
      $sql = "select * from user where Login_user='".$login."'";
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      $data = mysql_fetch_assoc($req);
     
      if($data['Mdp_User'] != $pass)
      {
        echo '<p>Mauvais login / password. Merci de recommencer</p>';
      }
      else
      {
          $_SESSION['Nom_User'] = $data['Nom_User'];                        //
        $_SESSION['Prenom_User'] = $data['Prenom_User'];                //
        $_SESSION['Service_User'] = $data['Service_User'];                //On sauvegarde les informations de 
        $_SESSION['Email_User'] = $data['Email_User'];                    //l'utilisateur dans les variables de sessions
        $_SESSION['Tel_User'] = $data['Tel_User'];                        //
        $_SESSION['Last_Connect_User'] = $data['Last_Connect_User'];    //
        header('Location: index2.php');                                    // permet de charger la page du site apres authentification
      }   
    }
    else 
    {
      echo '<p>Vous avez oublié de remplir un champ.</p>';
    }
    ?>
     
     
    <html>
    <head>
    </head>
     <body>
     
     
     <form action="index.php" method='post'>
    <table align="center" border="0">
      <tr>
        <td>Login :</td>
        <td><input type="text" name="login" maxlength="250"></td>
      </tr>
      <tr>
        <td>Password</td>
        <td><input type="text"name="pass" maxlength="10"></td>
      </tr>
      <tr>
        <td colspan="2" align="center"><input type="submit" value="log in"></td>
      </tr>
    </table>
    </form>
     </body>
    </html>

    désolé de vous faire vous creuser la tete . mais merci

  15. #15
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    mest un session_start() en haut de ta page pour voir

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 119
    Par défaut
    voila j'ai trouvé l'erreure...

    pas de session_start(); quel boulet..

    excusé moi.

  17. #17
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    un petit resolu

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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