Utilisation de session pour la gestion des acces à une application
cyrilherve
Messages postés324Date d'inscriptiondimanche 12 août 2007StatutMembreDernière intervention26 août 2011
-
24 mars 2009 à 14:46
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 2012
-
25 mars 2009 à 18:51
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']) && 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']) && !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 ?
A voir également:
Utilisation de session pour la gestion des acces à une application
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 24 mars 2009 à 21:27
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
cyrilherve
Messages postés324Date d'inscriptiondimanche 12 août 2007StatutMembreDernière intervention26 août 2011 25 mars 2009 à 14:02
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.
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.