Position actuelle: Accueil> Derniers articles> Comment utiliser PHP pour obtenir un système de contrôle d'autorisation efficace

Comment utiliser PHP pour obtenir un système de contrôle d'autorisation efficace

M66 2025-06-19

Compétences de développement PHP: comment mettre en œuvre le contrôle de l'autorisation des utilisateurs

Dans les applications Web, le contrôle d'autorisation de l'utilisateur est une fonctionnalité clé pour assurer la sécurité du système. Non seulement il empêche l'accès non autorisé, mais il garantit également que les utilisateurs légitimes obtiennent les autorisations dont ils ont besoin. Cet article vous amènera à réaliser progressivement le contrôle de l'autorisation de l'utilisateur via des exemples de code PHP spécifiques.

1. Conception de la base de données

Avant de développer un système de contrôle d'autorisation, nous devons d'abord concevoir une base de données pour stocker les informations de l'utilisateur et les données d'autorisation. En règle générale, vous créez les tables suivantes:

1. Tableau utilisateur: stocke les informations de base de l'utilisateur et les informations d'identification de connexion.

2. Tableau de rôle: définir les rôles des utilisateurs et leurs autorisations connexes.

3. Tableau d'autorisation: répertorie toutes les autorisations disponibles sur le système.

4. Tableau de relation d'autorisation des rôles: une relation plusieurs-à-plusieurs reliant les rôles et les autorisations.

Exemple de code:

Créer des utilisateurs de table (
  id int (11) Clé primaire Auto_Increment,
  nom d'utilisateur varchar (50) pas nul,
  mot de passe varchar (255) pas nul,
  role_id int (11) pas nul
));

Créer des rôles de table (
  id int (11) Clé primaire Auto_Increment,
  nom varchar (50) pas null
));

Créer des autorisations de table (
  id int (11) Clé primaire Auto_Increment,
  nom varchar (50) pas nul,
  ressource varchar (50) pas null
));

Créer une table Role_Permissions (
  id int (11) Clé primaire Auto_Increment,
  role_id int (11) pas nul,
  permission_id int (11) pas nul
));
  

2. Fonction de connexion

Avant d'implémenter le contrôle d'autorisation, nous devons implémenter une fonction de connexion de base. L'utilisateur vérifiera en soumettant le nom d'utilisateur et le mot de passe, et le système vérifiera les informations d'identification de l'utilisateur en fonction des enregistrements de la base de données.

Exemple de code:

session_start ();

if ($ _server ['request_method'] == 'post') {
  $ username = $ _post ['username'];
  $ mot de passe = $ _post ['mot de passe'];

  // Connectez-vous à la base de données et aux informations de l'utilisateur de requête $ Conn = new MySQLI («localhost», «nom d'utilisateur», «mot de passe», «base de données»);
  $ query = "SELECT * FROM Users Where username = '$ username' et mot de passe = '$ mot de passe'";
  $ result = $ Conn-> Query ($ query);

  if ($ result-> num_rows == 1) {
    $ row = $ result-> fetch_assoc ();
    $ _Session ['user_id'] = $ row ['id'];
    $ _Session ['username'] = $ row ['username'];
    $ _Session ['role_id'] = $ row ['role_id'];
    En-tête ('Emplacement: Dashboard.php');
    sortie;
  } autre {
    $ error = "nom d'utilisateur ou mot de passe non valide";
  }
}

if (isset ($ _ session ['user_id'])) {
  En-tête ('Emplacement: Dashboard.php');
  sortie;
}
  

3. Vérification de l'autorisation

Une fois que l'utilisateur s'est connecté, nous devons vérifier les autorisations en fonction du rôle de l'utilisateur pour garantir que les utilisateurs ne peuvent accéder qu'aux ressources dont elles sont autorisées. En écrivant une fonction de vérification d'autorisation, nous pouvons empêcher les utilisateurs d'accéder aux pages non soumises.

Exemple de code:

Fonction CheckPermission ($ ressource) {
  // Vérifiez si l'utilisateur est connecté if (! Isset ($ _ session ['user_id'])) {
    en-tête ('emplacement: login.php');
    sortie;
  }

  // Interroge les autorisations du rôle utilisateur $ conn = new mysqli («localhost», «nom d'utilisateur», «mot de passe», «base de données»);
  $ query = "sélectionner les autorisations.name 
            De (rôles 
            Inner Join Role_perMissions sur Roles.id = Role_perMissions.Role_id) 
            Autorisations de join 
            Où rôles.id = {$ _session ['role_id']} 
            Et autorisation.Resource = '$ ressource' ";

  $ result = $ Conn-> Query ($ query);

  if ($ result-> num_rows == 0) {
    En-tête («Emplacement: non autorisé.php»);
    sortie;
  }
}

CheckPermission ('Dashboard.php');
  

en conclusion

Cet article fournit des méthodes d'implémentation de base pour le contrôle de l'autorisation des utilisateurs PHP, y compris la conception de la base de données, la vérification de la connexion des utilisateurs, la vérification de l'autorisation et d'autres liens. Selon vos besoins, vous pouvez optimiser davantage ce système en fonction des différents scénarios d'application Web. Le contrôle de l'autorisation peut non seulement améliorer la sécurité du système, mais également améliorer l'expérience utilisateur. C'est une compétence incontournable pour chaque développeur PHP.