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 :

Gérer des profils différents avec des sessions PhP


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ing syst. retraité
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ing syst. retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 34
    Points
    34
    Par défaut Gérer des profils différents avec des sessions PhP
    Bonjour,
    Je suis en train de mettre en place le site d'un club de tennis. Le brouillon du site est déjà en place http://tennis.soisy.free.fr/site . Pour l'instant ce n'est qu'un coquille (presque) vide.
    Je souhaite mettre en place 4 zones correspondant à des droits d'accès différents.
    • Un espace public ouvert à tous pour faire connaitre notre club : la vitrine
    • Un espace adhérents : avec possibilités de pré-inscriptions, recherche de partenaires pour un match, prise de rdv pour le tournois annuel , ...
    • Un espace compétiteurs , pour accéder aux rendez-vous , aux messages des capitaines pour convoquer tel ou tel joueur etc..
    • Un espace "bureau" permettant aux gerants du club de gérer la base de données du club et les inscriptions, délivrer des reçus aux joueurs qui le demandent etc ...


    Est-il possible de définir des sessions différentes sachant que dans un premier temps je peux considérer que les niveaux d'habilitation sont croissant ?
    Les niveaux seraient : Public<adhérent<compétiteur<Bureau.
    (Une habilitation compétition ne donne pas accès à l'espace bureau mais à tout le reste).
    Je ne souhaite pas utiliser les cookies. Je souhaite être le moins contraignant pour les utilisateurs.
    Le niveau de PHP est celui de mon hébergeur : "free".
    Je suis débutant en Php et XHTML mais j'ai une très grande expérience informatique. (J'ai commencé à l'école en 1970 à sécher des cours d'électrotechnique pour aller programmer en salle machine) puis dès mon premier job en 73 et depuis j'ai toujours développé. ASS et C. Par contre je suis tout débutant dans les technologies du Web.
    Merci de vos conseils éclairés

  2. #2
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Bonjour,

    Trés shématiquement, on pourrait considérer 4 statuts différents, associés à des permissions d'accés différentes, et par exemple :

    statut_1 = Public
    statut_2 = Adherent
    statut_3 = Competiteur
    statut_4 = Bureau

    Soit 4 champs différents et bien distincts dans la table

    D'un point de vue mysql, on pourrait avoir comme résultat pour un membre enregistré, exemple :
    statut_1 => OUI
    statut_2 => NON
    statut_3 => OUI
    statut_4 => NON

    Si l'identification est correcte (login, pass), on met en session ces 4 variables.
    Elles y demeureront tant que le navigateur reste open.

    Ensuite, suffit de jongler avec des conditions de session, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ((isset($_SESSION['statut_1'])) && ($_SESSION['statut_1'] == OUI))
    { 
    //on autorise l'accés à X
    }
    else
    {
    // vous n'avez pas les droits pour accéder à cet espace X
    }
    Et ainsi de suite pour les autres champs.
    Dans ces conditions, un utilisateur peut avoir accés à 1 seul espace,....ou à plusieurs selon.

    En fait, et pour rectifier ta formule, on n'obtient pas des sessions différentes, mais une session unique avec des variables de session différentes suivant un utilisateur.

    Encore une fois, c'est shématique, et ceci suggéré, sous réserve d'avoir bien interprêté ta démarche.
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ing syst. retraité
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ing syst. retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 34
    Points
    34
    Par défaut [Résolu] Niveaux d'habilitation différents
    Citation Envoyé par alain31tl Voir le message
    En fait, et pour rectifier ta formule, on n'obtient pas des sessions différentes, mais une session unique avec des variables de session différentes suivant un utilisateur.

    Encore une fois, c'est shématique, et ceci suggéré, sous réserve d'avoir bien interprêté ta démarche.


    Merci Alain,
    tu as superbement bien résumé ce que je cherche,ça correspond à une logique simple et ça me va. Maintenant "il n'y a plus qu'à" s'y coller.
    Mais quand je comprend je finis par y arriver.

    Ton explication est digne d'une réponse à une question fréquente , donc ça serait bien dans la FAQ.

    MERCI
    Phil

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Il existe une autre approche un peu plus mathématique , je te la soumet , même si la solution précédente est tout à fait valide.

    Cette solution se base sur les puissance de 2.

    Reprenons tes roles et associons leur une valeure :

    Public : 2^0 = 1
    adhérent : 2^1 = 2
    compétiteur 2^2 = 4
    Bureau : 2^3 = 8

    Pour donner un rôle à un utilisateur il suffit de lui assigner une valeur.
    Par exemple un utilisateur qui aura comme valeur 1 , aura le role public , un utilisateur avec 2 aura le rôle d'adhérant.
    Un utilisateur avec 6 sera Adhérant (2) mais également Compétiteur (4) 4+2 = 6

    Pour schématiser un peu tout ça tu peux représenter ça en binaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    |__|__|_0|_1|_1|_0|
        16  8  4  2  1
    On voit clairement que l'utilisateur à le role 4 et le role 2.

    Pour vérifier un role il ne reste alors qu'a faire un masque bit à bit.
    par exemple :

    Mon utilisateur à t'il le role Bureau ?
    (valeur_utilisateur & valeur role) >= 1 ? Soit dans notre cas :
    Pour concrétiser tout ça :
    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
     
    define('PUBLIC',1);
    define('ADHERANT',2);
    define('COMPET',2);
    define('BUREAU',4);
     
    $utilisateur = array(
    	'nom' 		=> 'DUPOND',
    	'prenom' 	=> 'Jean',
    	'droits' 	=> 6
    );
     
    if($utilisateur['droits'] & COMPET) {
    	echo 'Je suis compétiteur';
    } elseif($utilisateur['droits'] & BUREAU) {
    	echo 'Je suis du bureau';
    }
    // etc...
    J'ai simplifié l'exemple pour que ce soit compréhensible mais on peut imagine un ensemble classe gérant tout ça. (ca doit d'ailleurs déjà exister en cherchant un peu ^^ )
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éprouvé Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Points : 1 019
    Points
    1 019
    Par défaut
    Salut grunk

    Interressant en effet.
    Mais j'imagine que les solutions sont nombreuses.
    A la limite, j'aurais pu aussi remplacer aussi "OUI, et "NON" par du binaire, et gérer avec explode par exemple, ce qui aboutissait au même résultat.

    A ce moment là, j'avais répondu à l'emporte pièce...une idée sur le tas, sans creuser "dans le dur".
    Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
    C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/02/2011, 15h46
  2. [WS 2003] Créer des dossiers différents pour des utilisateurs différents
    Par beegees dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 22/10/2009, 15h57
  3. Gérer des déploiement différents avec Maven.
    Par martopioche dans le forum Maven
    Réponses: 5
    Dernier message: 02/10/2007, 12h28
  4. [Débutant]Boucle imbriquée avec des bornes différentes
    Par Hayato dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/08/2005, 16h23
  5. Changer plusieur style avec des IDs différents?
    Par YanK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/07/2005, 14h33

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