Utilisation de session pour la gestion des acces à une application

Signaler
Messages postés
324
Date d'inscription
dimanche 12 août 2007
Statut
Membre
Dernière intervention
26 août 2011
-
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
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 :


<!-- 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']) &amp;&amp; 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:

<!-- interface receptionniste -->
<?php
session_start();

if (!isset($_SESSION['login']) &amp;&amp; !isset($_SESSION['password']) )
  {
   header("Location:index.php");
   exit();
  }    
else
  {  
//  ini_set('include_path','C:\Program Files\wamp\www\Projet courier\inc');
?>

  

    <?php 
      include ("menu_header.php");
    ?>
  

  
  

    <?php  
      include ("vue1_menu.php");
    ?>
  

  
  

   <?php  
      include ("vue1_contenu.php");
    ?>
  

  

  

   <?php  
      include ("footer.php");
   ?>
  

  
<?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 ?

3 réponses

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
ou est le probleme ?

= > où est le "bonjour", le "merci pour votre aide" ?

Il n'y a sans doute pas de problème.
Bon, j'déconne, il y en a là :
if(empty($_POST['id']) && empty($_POST['pwd']) )
=>
si je n'entre que le id ou que le pwd je passe tout debout.
if(!isset($_POST['id']) || !isset($_POST['pwd']) )

Même chose là :

if (!isset($_SESSION['login']) && !isset($_SESSION['password']) )
= >
if (!isset($_SESSION['login']) || !isset($_SESSION['password']) )

Avec ça aussi je rentre sans y être autorisé :
$id=$_POST['id'];
$pwd=$_POST['pwd'];
=> pense à traiter les données entrées par l'utilisateur

conserve l'identifiant et le motdepasse de l'utilisateur pour le teste d'acces des differentes vues
=> ça ne sert à rien de conserver le mot de passe, qui d'ailleurs devrait être encodé dans la DB

Quand je dis qu'il n'y a pas de pb, c'est tout simplement que tes sessions doivent être paramétrées pour un temps donné (voir le php.ini) voir pour la durée de la session (tant que tu n'as pas fermé ton navigateur)
Ca ne pose pas en soit de gros pb, puisque tu es déjà identifié. Mais il faut voir tout de même la durée pendant laquelle la session est valide et la sécurité que tu souhaite avoir pour l'accès à ces pages

Cordialement,

Kohntark -
Messages postés
324
Date d'inscription
dimanche 12 août 2007
Statut
Membre
Dernière intervention
26 août 2011

j'avoue que je viens de lire un tas de doc sur le gestion des durees de session et je ne m'ensort toujours pas.  est quelqun a un exple ou un code de ce genre pour moi, m'expliquer avec plus de detaisl ?
merci.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Je ne suis pas sur de pouvoir mieux expliquer que la doc :
http://php.mirror.camelnetwork.com/manual/fr/session.configuration.php#ini.session.gc-maxlifetime

Regarde dans ton php.ini ce aque tu as à session.cookie_lifetime.
Si tu as 0 :
Une fois identifié tu accèderas à tes pages jusqu'à ce que ton navigateur soit fermé. Si tu le réouvre il faudra te réidentifier.

Si tu as 3600 :
Une fois identifié tu accèderas à tes pages pendant 1 heure (navigateur / pc redémarrés ou pas) Passé ce temps tu devra te réidentifier.

<tt class="parameter"></tt>

Cordialement,

Kohntark -