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 :

Utilisation de sessions pour la gestion des accès à une application


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 111
    Points : 58
    Points
    58
    Par défaut Utilisation de sessions pour la gestion des accès à une application
    bonjour à tous,
    je travail sur une application ou j'ai prevu une page de connexion ou l'on s'identifie avec un indifiant et un mot de passe; ensuite en fonction de son groupe d'utilisateur on a acces à une interface particuliere. mon soucis est de proteger ces differentes de telle sorte qu'on ne puissent pas y acceder sans s'etre identifier, par exemple en tapant l'url de la page. j'utilise les sessions donc pour le faire. apres saisie de l'identifiant, du mot de passe et validation la methode action du formulaire execute la page 'menu.php' donc voici le code :

    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
     
     
    <!-- page du menu de l'application de gestion  -->
     
    <?php
    session_start();
    // recupere les saisies du formulaire de connexion
    $id=$_POST['id'];
    $pwd=$_POST['pwd'];
     
    // on verifi si l'utilisateur à saisit son identifiant et son mot de passe
    if(empty($_POST['id']) && empty($_POST['pwd']) )
      {
       echo ("saisissez un loggin et un mot de passe");
      }
    else
    {  
    // on indique le fichiers qui contient toutes les fonctions qui vont etre utilisees 
      include_once('mes_fonctions.php'); 
    // connexion a la base de données  
      connection_bd(projetcourier);
      $requette= "select * from UTILISATEURS where identifiant='$id' and motdepasse='$pwd' ";
      $donnees=requette_sql($requette);
      $ligne1=mysql_fetch_array($donnees);
      deconnection_bd();
     
      if (!$ligne1) 
       {
         echo (" identifiant ou mot de passe incorrect");
       }
      else
      {
    // conserve l'identifiant et le motdepasse de l'utilisateur pour le teste d'acces des differentes vues
     
      $_SESSION['login']=$ligne1['indentifiant'];
      $_SESSION['password']=$ligne1['motdepasse'];
     
    //recupere le groupe de l'utilisateur  
      $id_groupe=$ligne1['id_groupe'];
     
        switch($id_groupe)
    	 {
    	  case 6: header("location:vue5.php");break;// interface service admin et finan.
    	  case 5: header("location:vue4.php");break;// interface service des operations
    	  case 4: header("location:vue3.php");break;// interface enlevement et livraison
    	  case 3: header("location:vue2.php");break;// inteface arrivee-depart
    	  case 2: header("location:vue1.php");break;// interface receptionniste
    	  case 1: header("location:vue6.php");break;// interface administrateur
          break;
    	 }
      }
    }  
      ?>
    voici le code d'une interface dont je souhaite proteger l'acces, par exemple 'vue1.php' et pratiquement le mm pour toute les autres interfaces:

    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
     
    <!-- interface receptionniste -->
    <?php
    session_start();
     
    if (!isset($_SESSION['login']) && !isset($_SESSION['password']) )
      {
       header("Location:index.php");
       exit();
      }	
    else
      {  
    //  ini_set('include_path','C:\Program Files\wamp\www\Projet courier\inc');
    ?>
     
      <div id="menu_header">
        <?php 
          include ("menu_header.php");
        ?>
      </div>
     
    <div id="conteneur" >
     
      <div id="vue1_menu">
        <?php  
          include ("vue1_menu.php");
    	?>
      </div>
     
      <div id="menu_contenu">
       <?php  
          include ("vue1_contenu.php");
    	?>
      </div>
     
    </div>
     
      <div id="menu_footer">
       <?php  
          include ("footer.php");
       ?>
      </div>
     
    <?php 
    }
    ?>
    mon probleme est le suivant: la protection ne marche que apres avoir redemare ma machine et quand je n'ai pas encore eu a me connecte avec un indentifiant et un mot de passe correcte. des que je me suis deja connecte une fois ,, la protection des pages ne fonctionne plus , on peut les ouvrir simplemnt en saisissant l'url a partir du navigateur, ce que je veux controler .

    ou est le probleme ?

    merci pour vos reponses et exemple ...

  2. #2
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Points : 225
    Points
    225
    Par défaut
    Citation Envoyé par cyrilherve Voir le message
    [CODE]
    $requette= "select * from UTILISATEURS where identifiant='$id' and motdepasse='$pwd' ";
    $_SESSION['login']=$ligne1['indentifiant'];

    case 6: header("location:vue5.php");break;// interface service admin et finan.
    ?>
    Bonjour.
    Ton problème est logique : tu ne stocke pas le rôle de la personne dans la session, donc, une fois connectée, elle a accès à toutes les pages. Met l'id_groupe dans ta session, et vérifie :
    • le login est présent sinon -> retour à la page de login
    • le role (id_groupe) est le bon sinon -> retour à l'accueil pour ce role

    D'ailleurs, c'est volontaire que les id_groupe et les numéros de tes vues soient décalés ?

    Sinon, c'est une erreur de recopiage ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne1['indentifiant'];
    Autrement, pour les headers Location, je viens de relire php.net, il faut faire attention aux URI relatives, et aussi l'écrire en faisant attention a la majuscule et à l'espace. C'est pas obligatoire, mais sachant que c'est interprété par le navigateur à partir des standards du w3c, on peux s'attendre à tout.

    Bonne journée

Discussions similaires

  1. Gestion des accès à une base de données & retry
    Par GasparOff dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 12/03/2014, 12h47
  2. nouvelle solution de gestion des accès aux applications Cloud
    Par claracloudiway dans le forum Cloud Computing
    Réponses: 0
    Dernier message: 20/03/2012, 14h10
  3. [AC-2010] MCD Pour la gestion des participants à une convention.
    Par seanp223 dans le forum Modélisation
    Réponses: 2
    Dernier message: 05/05/2011, 04h20
  4. Gestion des accès à une base de données
    Par white_tiger dans le forum Sécurité
    Réponses: 7
    Dernier message: 07/02/2007, 00h39

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