Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2007, 11h25   #1
Membre du Club
 
Inscription : juin 2005
Messages : 102
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : juin 2005
Messages : 102
Points : 51
Points : 51
Par défaut [Sécurité] Affichages d'une page avec différents droits d'accès

Voilà mon interrogation.

Pour une page web affichée, je souhaiterais afficher différents éléments en fonction de droits d'accès.
Y a-t-il une technique particulière évitant de faire des tests "un peu partout" en fonction des droits ?
Je ne sais pas si je suis clair dans mes expliquations mais je vous remercie d'avance pour vos réponses.
franck.thibault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 11h47   #2
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Personnellement je travaille avec des niveau d'accès ce qui me permet de tout tester avec un seul if. Je te donne un exemple:

Tu crées tes différents goupres:
  • Membres [1]
  • Modérateurs [2]
  • Administrateurs [3]

Et dans ta base de donnée tu ajoutes un champs "access_level" dans lequel tu stockes le niveau d'accès que j'ai mis entre []. C'est pratique car dans 90% des cas les pages que les membres peuvent voir les Modérateurs et les Administrateurs le peuvent aussi. Ensuite moi je répértorie toutes mes pages dans une base de données ou je met l'ID de la page puis l'ID de la page parent (s'il y en a une...) et le niveau d'accès de la page. Puis sur ta page index.php tu n'as plus qu'à tester
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
 
// Tu fais un query sur la base pour retrouver le niveau d'accès de la page grâce à l'id de la page... Et normalement tu met le niveau d'accès de l'utilisateur dans une SESSION
 
if($_SESSION['userLevel'] >= $pageLevel)
{ 
     //affiche page
}
else
{ 
     //erreur d'accès
}
Voilà c'est un système très simple mais qui fonctionne. Seul petit défaut c'est que toutes tes pages doivent être répértoriées, mais sa peut aussi être un avantage...
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 12h16   #3
Membre du Club
 
Inscription : juin 2005
Messages : 102
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : juin 2005
Messages : 102
Points : 51
Points : 51
Merci pour ta réponse mais ça je connaissais.
Je me suis mal expliqué. En fait, c'est à l'intérieur d'une page que je souhaiterais afficher des éléments en fonction des droits (par exemple, un boîte toto pour les membres, et une boîte toto et une tata pour les admins, et pas de boîte pour les invités).
franck.thibault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 12h21   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Même principe tu testes ta variable session ou ton champ bdd. Mais il serait plus judicieux de récuperer les informations connexion du membre et les mettre en SESSION. Puis dans ton script gérer les différents cas à coup de if

Code :
1
2
3
if($_SESSION['userlevel'] == ADMINISTRATEUR)
//traitement
else if....
avec ADMINISTRATEUR un constante définit à l'aide d'un define
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 12h24   #5
Membre du Club
 
Inscription : juin 2005
Messages : 102
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : juin 2005
Messages : 102
Points : 51
Points : 51
Citation:
Envoyé par Kerod
...Puis dans ton script gérer les différents cas à coup de if

Code :
1
2
3
if($_SESSION['userlevel'] == ADMINISTRATEUR)
//traitement
else if....
avec ADMINISTRATEUR un constante définit à l'aide d'un define
C'est bien ce que je voudrais éviter. Y pas d'astuces de programmation qui pourraient éviter ça ?
franck.thibault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 13h02   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Il te faudra quand même faire un traitement de condition pour les différents affichages. Sinon côté sécurité, j'ai dis une grosse bétise car si on arrive à récupérer ton id session on pourra avoir accès à ton administration
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 13h06   #7
Membre du Club
 
Inscription : juin 2005
Messages : 102
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : juin 2005
Messages : 102
Points : 51
Points : 51
Citation:
Envoyé par Kerod
Il te faudra quand même faire un traitement de condition pour les différents affichages.
OK merci
Citation:
Envoyé par Kerod
Sinon côté sécurité, j'ai dis une grosse bétise car si on arrive à récupérer ton id session on pourra avoir accès à ton administration
Tu me conseilles quoi alors ? Je comptais gérer çà via les sessions
franck.thibault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 13h19   #8
Rédacteur
 
Avatar de Yoteco
 
Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 086
Détails du profil
Informations personnelles :
Nom : Alain Sahli
Âge : 25

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 086
Points : 1 479
Points : 1 479
Tu peux sécuriser tes sessions avec une base de donnée ou alors tu enregistres l'ip de l'utilisateur. Y a un tuto sur la sécurisation des sessions >>ICI<<
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 13h34   #9
Membre du Club
 
Inscription : juin 2005
Messages : 102
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : juin 2005
Messages : 102
Points : 51
Points : 51
Merci pour tout.
franck.thibault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 13h40   #10
Membre expérimenté
 
Avatar de jc_cornic
 
Inscription : octobre 2006
Messages : 624
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : octobre 2006
Messages : 624
Points : 588
Points : 588
Envoyer un message via MSN à jc_cornic
Juste pour clore la discussion, pensez à cocher "résolu" quand c résolu
jc_cornic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2007, 13h46   #11
Membre du Club
 
Inscription : juin 2005
Messages : 102
Détails du profil
Informations personnelles :
Âge : 41
Localisation : France, Yvelines (Île de France)

Informations forums :
Inscription : juin 2005
Messages : 102
Points : 51
Points : 51
Citation:
Envoyé par jc_cornic
Juste pour clore la discussion, pensez à cocher "résolu" quand c résolu
Oups ! désolé. Voilà qui est fait
franck.thibault est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h35.


 
 
 
 
Partenaires

Hébergement Web