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

PHP & Base de données Discussion :

privilège des utilisateurs -> redirection


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut privilège des utilisateurs -> redirection
    Bonjour,

    Alors pour l'instant dans ma page de connexion je fait un test sur le couple loginUtilisateur et passwordUtilisateur pour avoir accès à un menu.

    Mais maintenant je veux, que selon le privilège de l'utilisateur qui se connecte via la page de connexion, lui permet d'avoir un menu différent.

    Exemple :

    adminisatrateur : accès à tous les liens du menu
    utilisateur de base : accès restreint pour certains menu
    etc...

    Mon menu est affiché sur toutes les pages via un include, sauf à la page de connexion.

    Ma table privilège contient :

    codePrivilege clé primaire
    typePrivilege
    utilisateurPrivilege

    Mon script de connexion :

    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
    if (!isset($_POST['loginUtilisateur']))
     
        {
          echo "
          <form method='post' action='index.php'>
          <TABLE>
          <TR>
          <TD>Login utilisateur</TD>      
            <TD><input type='text' name='loginUtilisateur'></TD>     
          </TR>
          <TR>
          <TD>Mot de passe</TD>       
          <TD><input type='password' name='passwordUtilisateur'></TD>      
          </TR>
          </TABLE></br>      
            <input class='bouton'' type='submit' value ='Identification'>
            <a href='formulaireMail.php'>mot de passe oublié</a>
          </form></br>
     
              ";
        }
     
    else
     
        {
          $loginUtilisateur=$_POST['loginUtilisateur'];
          $passwordUtilisateur=$_POST['passwordUtilisateur'];
     
         $ligne=extraireUneLigne("select passwordUtilisateur from ccf_Utilisateur where loginUtilisateur='$loginUtilisateur'");
     
         if ($ligne)
            {if ($ligne['passwordUtilisateur']==$passwordUtilisateur)
                {
                  echo "Identification réussie<br>";
                  $_SESSION['loginUtilisateur']=$loginUtilisateur;
                  echo"<a href='authentification.php'>Accès au menu</a>";
                }
             else
                {             
                 echo "Mot de passe erroné<br>";
                 echo"<a href='index.php'>Nouvel essai</a>";            
                }
            }
         else
            {
              echo "Login utilisateur inconnu<br>";
              echo"<a href='index.php'>Nouvel essai</a>"; 
            }      
       }
    EDIT :

    Je pensai à faire dans mon include qui affiche le menu, un test sur le privilège.
    Si codePrivilege = 1 -> echo"menu1"
    Si codePrivilege = 2 -> echo"menu2" etc...

    Vous en pensez quoi ?

    Merci de m'aider.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu veux un cran au dessus, tu gères tes menus dans ta base, ca te permet de les définir dans la partie données et non pas dans le code.

    Il ne faut pas oublier de controler les droits dans les pages de destination.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    D'accord, comment gérer les menus dans ma base ?

    Et pour les droits dans les pages de destination, tu veux dire chaque pages qui affichent un menu ? ou la page du menu elle même ?

    Merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Au lieu d'avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($droit == 1) { echo"menu1"; }
    Tu aurais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "SELECT menus FROM table WHERE droit = " . $droit;
    echo $resultat;
    Pour la sécurité si le droit admin donne accès à un menu qui renvoi vers admin.php par exemple, il faut que dans admin.php tu vérifies à nouveau que l'utilisateur a bien le droit admin.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    Je préfère faire plus simple si possible.

    Juste que une fois logué,

    Si l'utilisateur appartient au privilège 1 -> echo menu1
    Si l'utilisateur appartient au privilège 2 -> echo menu2
    Si l'utilisateur appartient au privilège 3 -> echo menu3

    Merci

  6. #6
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Tu perd en dynamisme pour l'avenir la par contre.

    Table privilege : id_priv, libelle_priv (ex: 1, admin)

    clé étrangère dans utilisateur en réf à privilege.id_priv

    Tu charge tes données utilisateur dont la clé étrangère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['privilege'] = $req['util_id_priv'];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($_SESSION['privilege'] == 1)
    {
       echo "<a href='#'>poney</a>";
    }
    C'est fortement optimisable.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    Ma table ccf_privilege contient comme champs :

    codePrivilege (ex : 1)
    typePrivilege (ex : admin)
    utilisateurPrivilege
    (ex : administrateur)

    Ma table ccf_utilisateur contient :

    privilegeUtilisateur en référence à utilisateurPrivilege

    Donc :

    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
    $_SESSION['privilege'] = $req['privilegeUtilisateur'];
     
    if($_SESSION['privilege'] == 1)
    {
       echo "<a href='accueil.php'>accueil</a>";
       echo "<a href='admin.php'>panel admin</a>";
    }
     
    if($_SESSION['privilege'] == 2)
    {
       echo "<a href='accueil.php'>accueil</a>";
       echo "<a href='utilisateur.php'>panel utilisateur</a>";
    }
     
    if($_SESSION['privilege'] == 3)
    {
       echo "<a href='accueil.php'>accueil</a>";
       echo "<a href='professeur.php'>panel professeur</a>";
    }
    Et la requête SQL ressemblerait à quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req="SELECT utilisateurPrivilege FROM ccf_privilege WHERE ccf_privilege.utilisateurPrivilege = ccf_utilisateur.privilegeUtilisateur";

  8. #8
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Citation Envoyé par mousefr Voir le message
    Ma table ccf_privilege contient comme champs :

    codePrivilege (ex : 1)
    typePrivilege (ex : admin)
    utilisateurPrivilege
    (ex : administrateur)

    Ma table ccf_utilisateur contient :

    privilegeUtilisateur en référence à utilisateurPrivilege
    typePrivilege et utilisateurPrivilege c'est de la redondance d'information limite, de plus pour des clés étrangères, travaille sur des id c'est plus optimisé, donc codePrivilege.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req="SELECT utilisateurPrivilege FROM ccf_privilege WHERE ccf_privilege.utilisateurPrivilege = ccf_utilisateur.privilegeUtilisateur";
    Tu doit avoir 2 tables dans ton from pour faire une jointure, de plus elle n'est pas necessaire.

    ta requête sera du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT privilegeUtilisateur  FROM utilisateur WHERE idUtilisateur='$id'

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    Là dans ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req="SELECT privilegeUtilisateur FROM ccf_utilisateur WHERE numUtilisateur= '$id'";
    Je sélectionne les privilegeUtilisateur (administrateur, consulter/modifier, consulter) ou mon numUtilisateur = $id.
    Mais $id fait référence à quoi ?

  10. #10
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Non non, relit mon post précédant concernant sur quoi travailler et sur la structure de tes tables.

    $id est une variable de l'id utilisateur, il en faut un si ce n'est pas encore le cas.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    Alors pour la structure, j'ai supprimé utilisateurPrivilege

    Donc il me reset l'id et le type
    (1, admin)
    (2, professeur)etc...

    Après pour $id :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $requeteId="SELECT numUtilisateur FROM ccf_utilisateur";
    $result=mysql_query($requeteId);
     
    $id = $result['numUtilisateur'];

    C'est ça ?

  12. #12
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    La première partie oui, pour l'id c'est un peu plus complexe car tu recherche a récupérer l'id de l'utilisateur de session, je m'explique :

    Dans un premier temps tu vérifie l'existance du couple login/password

    Ensuite tu charge l'utilisateur qui possède le couple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM utilisateur WHERE login='$login' AND password=$password
    De la tu peut affecter ta session (lien)
    vus que ta requête a aussi chargée l'id de l'utilisateur tu l'affecte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['id_util']=$req['id_util'];
    Dans ce cas ci tu as charger par ailleurs le privilège de ton utilisateur tu peut aussi l'affecter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['privilege']=$req['privilege'];

    Normalement à ce moment tu dispose de tout les éléments nécessaire pour gérer tes liens, tiens nous au courant.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    Voilà ce que j'ai fait (sans gérer les echo des menus) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $requete="SELECT * FROM ccf_utilisateur WHERE loginUtilisateur='$login' AND passwordUtilisateur='$password'";
    $SESSION['numUtilisateur']=$requete['numUtilisateur'];
    $SESSION['typePrivilege']=$requete['typePrivilege'];
    Message d'erreur :

    Notice: Undefined variable: login
    Notice: Undefined variable: password

    J'affecte mon loginUtilisateur à la variable $login, mais je ne l'utilise jamais...

    C'est pas possible de rajouter 1 ou 2 conditions dans ma page de connexion, juste pour gérer la valeur du codePrivilege ?

    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
    $loginUtilisateur=$_POST['loginUtilisateur'];
          $passwordUtilisateur=$_POST['passwordUtilisateur'];
     
         $ligne=extraireUneLigne("select passwordUtilisateur from ccf_Utilisateur where loginUtilisateur='$loginUtilisateur'");
     
         if ($ligne)
            {if ($ligne['passwordUtilisateur']==$passwordUtilisateur)
                {
                  echo "Identification réussie<br>";
                  $_SESSION['loginUtilisateur']=$loginUtilisateur;
                  echo"<a href='authentification.php'>Accès au menu</a>";
                }
             else
                {             
                 echo "Mot de passe erroné<br>";
                 echo"<a href='index.php'>Nouvel essai</a>";            
                }
            }
         else
            {
              echo "Login utilisateur inconnu<br>";
              echo"<a href='index.php'>Nouvel essai</a>"; 
            }
    Je suis un peu perdu

Discussions similaires

  1. Les privilèges des utilisateurs
    Par linux user dans le forum Administration
    Réponses: 7
    Dernier message: 17/09/2013, 21h08
  2. [SP-2007] Redirection des utilisateurs
    Par nouvintou dans le forum SharePoint
    Réponses: 1
    Dernier message: 23/04/2011, 06h52
  3. Réponses: 13
    Dernier message: 02/12/2007, 11h39
  4. privilèges des utilisateurs sur postgresql
    Par naim1982 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 19/01/2007, 18h17
  5. Réponses: 3
    Dernier message: 03/05/2005, 18h18

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