• Facile
Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Introduction du cours

Bienvenue dans ce tutoriel !

Dans ce tuto, vous apprendrez à donner / enlever des droits à des utilisateurs.
Cela est très utile dans le cas de la gestion d'un site à plusieurs (admins, rédacteurs, modérateurs...).

Si vous voulez que la page nouvel_article.php ne soit accessible qu'aux administrateurs et aux rédacteurs, ce tuto est fait pour vous.

Vous pourrez aussi créer des groupes de permissions qu'il sera possible de modifier ou de supprimer par la suite.

En avant ! :pirate:

Niveau : 8/10 — Avancé.

Informations et création des tables

Informations

Dans cette première partie, je vais vous indiquer précisément ce que nous allons faire et aussi vous donner le code SQL pour créer les deux tables. ;)

Comme je vous l'ai dit dans l'introduction, vous allez apprendre à gérer les permissions (les accès aux pages, en quelque sorte) des utilisateurs.
Cela sera peut-être utile pour un site avec un forum, un site de news...

Voici les pages que nous allons créer :

  • ajouter_gr_perm.php : cette page sert à créer un groupe de permissions ;

  • modifier_gr_perm.php : avec cette page, il sera possible de modifier un groupe de permissions ;

  • del_gr_perm.php : là, c'est pour supprimer un groupe de permissions ;

  • add_user.php : vous pourrez ajouter un utilisateur sur cette page.

Vous aurez aussi à modifier la page PHP qui vous permet de vous connecter à l'administration de votre site (/forum).

Prenez en note que dans ce tutoriel, je ne gérerai que trois permissions :

  • ajouter un article ;

  • modifier un article ;

  • supprimer un article.

Par la suite, vous pourrez modifier mon script afin d'ajouter des permissions, pas de souci également. :D

Création des tables

Pour que tous nos fichiers fonctionnent bien, il leur faut deux tables SQL. Si vous ne savez pas ce que c'est, lisez le tuto de M@teo21 (sur le PHP).

Il est possible de créer la table très facilement, viaphpmyadmin. phpmyadmin est un logiciel utilisé par la plupart des hébergeurs, il vous sert à créer / modifier / supprimer des tables via une interface. :)

Procédons à la création de la table 'permissions', celle qui sera utilisée pour tous les groupes.

Rendez-vous donc sur « le » phpmyadmin de votre hébergeur et cliquez sur l'onglet « SQL ».
Vous devriez arriver sur une page avec une boîte de texte ; copiez-collez ce code dedans :

CREATE TABLE `permissions` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(255) NOT NULL,
  `permissions` INT(11) NOT NULL,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Normalement, après avoir cliqué sur « Exécuter », la table est créée ! :)

Refaites les mêmes opérations, mais avec le code ci-dessous.
Il va créer la table 'users', utilisée pour la gestion des utilisateurs.

Le code :

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pseudo` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `id_groupe` int(11) NOT NULL,
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Informations supplémentaires à la suite de la mise à jour

Eh oui, ce tutoriel a été mis à jour !
Avant la mise à jour, pour gérer les droits, on utilisait un champ SQL pour chaque droit.

Dorénavant, nous utiliserons un champ qui contiendra tous les droits !
Si l'on peut faire ça, c'est grâce aux opérateurs de bits.

Plutôt que d'expliquer après chaque script à quoi sert telle ou telle ligne bizarre utilisant les opérateurs de bits, je vais tout vous expliquer ici. :)
Voici ceux que nous utiliserons :

  • ajout de droit(s) : quand j'aurai à ajouter un droit (= une permission), je ferai quelque chose dans ce style :

    <?php
    $droits |= Add_article;
    ?>
    

    Ici, nous mettons un « OU » ( | ) juste avant le signe « égal ». Add_article est une constante.

  • suppression d'un droit : dans la modification des groupes de permissions, j'aurai besoin de supprimer des droits. Je mettrai ce code :

    <?php
    $droits &= ~(Mod_article | Add_article); 
    ?>
    

    Je précise que le nom des constantes pourra changer. ;)

  • vérification d'un droit : pour protéger vos pages, vous devrez faire une condition. Cette condition ressemblera à celle-ci :

    <?php
      if (((int)$_SESSION['droits'] & LIRE_ARTICLE)) 
      {
            echo 'Lire article : OK<br />';
      }
    ?>
    

    Je vous en reparlerai plus précisément quand nous aurons à l'utiliser. ;)

Vous voilà maintenant rapidement initié aux opérateurs de bits. Encore une fois, si vous voulez en savoir plus, je vous conseille d'aller lire ce tutoriel :
http://www.siteduzero.com/tuto-3-6518- [...] -de-bits.html.

Ajouter, modifier et supprimer les groupes

Fini le bla-bla... on passe aux choses sérieuses. :p

Eh oui, il fallait bien que j'explique. :)

Créer un groupe de permissions

Pour faire cette action, nous allons créer la page ajouter_gr_perm.php.
Dans cette page, on trouvera le formulaire ainsi que le traitement en PHP !

Voici le code :

<?php 
// On démarre la session
session_start();
 
mysql_connect('localhost', 'root', ''); // Vos identifiants
mysql_select_db('tuto_perm');
 
define ('ECRIRE_ARTICLE', 0x01); // Nous définissons les constantes de droits
define ('SUPPRIMER_ARTICLE', 0x02); // Une constante = un droit
define ('MODIFIER_ARTICLE', 0x08); // Pour savoir à quoi correspondent les valeurs des constantes, allez ici : http://www.siteduzero.com/tuto-3-6518-1-introduction-aux-operateurs-de-bits.html#ss_part_6
 
 
if(isset($_POST['Nom'])) // Si le formulaire a été validé, on peut effectuer les actions PHP
{
 
        $nom = $_POST['Nom']; // Le nom du groupe
        
        if( $_POST['Add_article'] == 'add_article_oui')  // Si dans le formulaire, on a indiqué que ce groupe pouvait ajouter un article...
        {
                $droits |= ECRIRE_ARTICLE; // On ajoute la permission dans la variable $droits
        }
                                                ## Mêmes actions ci-dessous avec Modifier un article et Supprimer un article ##
        if( $_POST['Mod_article'] == 'mod_article_oui') 
        {
                $droits |= MODIFIER_ARTICLE;
        }
 
        if( $_POST['Del_article'] == 'del_article_oui')  
        {
                $droits |= SUPPRIMER_ARTICLE;
        }
 
        
        $requete = 'INSERT INTO permissions(nom, permissions) 
        VALUES ("'.$nom.'", "'.@$droits.'")'; // On prépare la requête, ça va ajouter les permissions stockées dans $droits, ainsi que le nom
        
        $ex_requete = mysql_query($requete)or die(mysql_error()); // On exécute la requête ou on affiche une erreur
        if($ex_requete) echo 'Le groupe a bien été ajouté !<br />'; // Si c'est OK, on affiche un message disant que c'est bon
        else echo 'Le groupe n\'a pu être ajouté !<br />'; // Sinon, on en affiche un disant que ce n'est pas bon...
}
                                        ########### FORMULAIRE ###########
?>
<p>Bienvenue dans la gestion des permissions.<br />
Sur cette page, vous pouvez ajouter un groupe de permissions.<br />
Pour cela, il vous suffit de remplir les cases ci-dessous.<br />
</p>
<form name="add_groupe" method="post">
<label for="Nom">Nom du groupe : </label><input type="text" name="Nom" /><br />
 
<label for="Add_article">Possibilité d'ajouter un article : </label>
       <select name="Add_article" id="Add_article">
           <option value="add_article_oui">Oui</option>
                   <option value="add_article_non">Non</option>
       </select><br />
 
<label for="Mod_article">Possibilité de modifier un article : </label>
       <select name="Mod_article" id="Mod_article">
           <option value="mod_article_oui">Oui</option>
                   <option value="mod_article_non">Non</option>
       </select><br />
 
<label for="Del_article">Possibilité de supprimer un article :  </label>
       <select name="Del_article" id="Del_article">
           <option value="del_article_oui">Oui</option>
                   <option value="del_article_non">Non</option>
       </select><br />
 
<input type="submit" name="creer" value="Créer le groupe de permissions !" /></form>

Si vous testez la page, vous verrez le formulaire. :)
Vous pouvez même entrer les informations et valider, ça marche ! :)

Modification / suppression des groupes

Passons à la modification et à la suppression des groupes.

Pour la modification des groupes (le script le plus dur de tous ceux du tuto :p ), voici le code :

<?php 
// On démarre la session
session_start();
 
mysql_connect('localhost', 'root', ''); // Vos identifiants
mysql_select_db('tuto_perm');
 
define ('ECRIRE_ARTICLE', 0x01); // Nous définissons les constantes de droits
define ('SUPPRIMER_ARTICLE', 0x02); // Une constante = un droit
define ('MODIFIER_ARTICLE', 0x08); // Pour savoir à quoi correspondent les valeurs des constantes, allez ici : http://www.siteduzero.com/tuto-3-6518-1-introduction-aux-operateurs-de-bits.html#ss_part_6
 
$select = mysql_query('SELECT * FROM permissions WHERE id = "'.$_REQUEST['id'].'" ')or die(mysql_error()); // On sélectionne les infos
$donnees = mysql_fetch_assoc($select); // On met tout ça dans un tableau
if(!isset($_REQUEST['id'])) // Si on n'a pas choisi le groupe à modifier
{
        $select = mysql_query('SELECT * FROM permissions')or die(mysql_error());
        echo 'Veuillez sélectionner le groupe à modifier : <br /><ul>';
        while($nom = mysql_fetch_assoc($select))
        {
                echo '<li><a href="?id='.$nom['id'].'">'.$nom['nom'].'</a></li><br />';
        }
        echo '</ul>';
}
elseif(!isset($_POST['id'])) // Si le formulaire n'est pas posté
{
        if (((int)$donnees['permissions'] & ECRIRE_ARTICLE)) 
        {
                $selected_add_article = 1;
        }
        else
        {
                $selected_add_article = 0;
        }
        if (((int)$donnees['permissions'] & SUPPRIMER_ARTICLE)) 
    {
                $selected_del_article = 1;
    }
        else
        {
                $seleted_del_article = 0;
        }
    if (((int)$donnees['permissions'] & MODIFIER_ARTICLE)) 
    {
                $selected_mod_article = 1;
    }
        else
        {
                $selected_mod_article = 0;
        }
 
        
?><p>Vous pouvez modifier, si vous le souhaitez, les infos et permissions de ce groupe : </p><br />
<form name="add_groupe" method="post" >
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>" />
<label for="Nom">Nom du groupe : </label><input type="text" name="Nom" value="<?php echo $donnees['nom']; ?>"/><br />
   <label for="Add_article">Possibilité d'ajouter un article : </label>
       <select name="Add_article" id="Add_article">
           <option value="add_article_oui" <?php if($selected_add_article == 1) echo 'selected="selected"'; ?>>Oui</option>
                   <option value="add_article_non" <?php if($selected_add_article == 0) echo 'selected="selected"'; ?>>Non</option>
       </select><br />
   <label for="Mod_article">Possibilité de modifier un article : </label>
       <select name="Mod_article" id="Mod_article">
           <option value="mod_article_oui" <?php if($selected_mod_article == 1) echo 'selected="selected"'; ?>>Oui</option>
                   <option value="mod_article_non" <?php if($selected_mod_article == 0) echo 'selected="selected"'; ?>>Non</option>
       </select><br />
  <label for="Del_article">Possibilité de supprimer un article : </label>
       <select name="Del_article" id="Del_article">
           <option value="del_article_oui" <?php if($selected_del_article == 1) echo 'selected="selected"'; ?>>Oui</option>
                   <option value="del_article_non" <?php if($selected_del_article == 0) echo 'selected="selected"'; ?>>Non</option>
       </select><br />
<input type="submit" name="creer" value="Modifier le groupe de permissions !" /></form><?php
        
 
}
else
{
        
        $nom = $_POST['Nom']; // Le nom du groupe
        
        $droits = ''; // On déclare la variable qui va contenir toutes les permissions
        
        if( $_POST['Add_article'] == 'add_article_oui')  // Si dans le formulaire, on a indiqué que ce groupe pouvait ajouter un article...
        {
                $droits |= ECRIRE_ARTICLE; // On ajoute la permission dans la variable $droits
        }
                                                ## Mêmes actions ci-dessous avec Modifier un article et Supprimer un article ##
        if( $_POST['Mod_article'] == 'mod_article_oui') 
        {
                $droits |= MODIFIER_ARTICLE;
        }
 
        if( $_POST['Del_article'] == 'del_article_oui')  
        {
                $droits |= SUPPRIMER_ARTICLE;
        }
        
        $requete = 'UPDATE permissions SET nom = "'.$nom.'", permissions = "'.$droits.'" WHERE id = "'.htmlspecialchars($_GET['id']).'" '; // On prépare la requête
 
        $ex_requete = mysql_query($requete)or die(mysql_error()); // On exécute la requête, c'est-à-dire que l'on va changer les informations du groupe stockées dans la table
        if($ex_requete)
        {
                echo 'Le groupe a bien été modifié !<br />'; // Message OK
        }
        else
        {
                echo 'Le groupe n\'a pu être modifié !<br />';  // Message ERREUR
        }
}
?>

Le code pour la suppression d'un groupe va être beaucoup moins long, il suffit d'une petite requête. :-°
Allez, voici le code :

<?php 
// On démarre la session
session_start();
 
mysql_connect('localhost', 'root', ''); // Vos identifiants
mysql_select_db('tuto_perm');
 
        
if(!isset($_GET['id'])) // Si le groupe à supprimer n'a pas été choisi
{
        $select = mysql_query('SELECT * FROM permissions'); // Requête pour sélectionner tous les groupes
        echo '<i>Veuillez sélectionner le groupe à supprimer : </i><br /><ul>';
        while($do = mysql_fetch_assoc($select)) // Une boucle pour afficher
        {
                echo '<li><a href="?id='.$do['id'].'">'.$do['nom'].'</a></li><br />'; // Lien avec le nom
        }
        echo '</ul>';
}
if(isset($_GET['id']) && !isset($_GET['confirm'])) // Si le groupe a été sélectionné, on affiche un message de confirmation...
{
        echo 'Êtes-vous sûr de votre choix ?<br />
        <a href="?id='.$_GET['id'].'&confirm">Oui</a>';
}
if(isset($_GET['id']) && isset($_GET['confirm'])) // Si le groupe est choisi ET validé, on va pouvoir supprimer
{
        $requete = 'DELETE FROM permissions WHERE id = "'.$_GET['id'].'" '; // Préparation de la requête
 
        $delete = mysql_query($requete)or die(mysql_error()); // On exécute la requête
        if($delete) 
        {
                echo 'Le groupe a bien été supprimé !'; // Si c'est OK...
        }
        else
        {       
                echo 'Le groupe n\'a pu être supprimé !';  // S'il y a une erreur...
        }
}
 
?>

Cette partie est finie, vous pouvez maintenant ajouter, modifier et supprimer des groupes de permissions !

Mais comment les utiliser ?

L'ajout d'un utilisateur et la connexion

Nous voilà dans la dernière partie de ce tutoriel.

Ici, nous verrons comment ajouter un utilisateur à un groupe (que vous aurez préalablement créé) et mettre ses permissions en session. ;)

Ajout d'un utilisateur

Le code est très simple, un formulaire et une requête !
Vous verrez qu'une partie du formulaire est dynamique, c'est celle qui concerne les groupes, mais mieux vaut regarder le code :

<?php session_start(); // On démarre les sessions
 
mysql_connect('localhost', 'root', ''); // Vos identifiants
mysql_select_db('tuto_perm');
 
$select = mysql_query('SELECT * FROM permissions')or die(mysql_error()); // On sélectionne les groupes
 
if(isset($_POST['submit'])) // Si le formulaire a été validé
{
        $pseudo = htmlspecialchars($_POST['Pseudo']); // Son pseudo
        $password = sha1($_POST['Password']); // Son mot de passe, hashé grâce à la fonction sha1()
 
        $id_groupe = $_POST['groupe']; // L’ID du groupe
 
 
        $insert = mysql_query('INSERT INTO users(id, pseudo, password, id_groupe) VALUES("", "'.$pseudo.'", "'.$password.'", "'.$id_groupe.'")')or die(mysql_error()); // On insère le tout !
         
        if($insert) echo 'L\'ajout de l\'utilisateur a réussi !'; // Si c'est bon, message OK
        else echo 'L\'ajout de l\'utilisateur a raté !'; // Sinon, on affiche un message d'erreur
}
?>
<p>Si vous souhaitez ajouter un utilisateur, veuillez remplir les champs ci-dessous : </p><br />
<form name="add_user" method="post">
<label for="Pseudo">Pseudo : </label><input type="text" name="Pseudo" /><br />
<label for="Password">Password : </label><input type="password" name="Password" /><br />
   <label for="Groupe">Groupe de permission : </label>
       <select name="groupe" id="groupe">
        <?php 
                while($noms = mysql_fetch_assoc($select)) // Partie dynamique du formulaire : pour chaque groupe, on ajoute une option
                {
                        echo '<option value="'.$noms['id'].'">'.$noms['nom'].'</option>'; 
                }
        ?>
       </select><br />
           <input type="submit" name="submit" value="Créer l'utilisateur" /></form>

Essayez ce code, il fonctionne. ;)
Petite remarque à propos du mot de passe : il est hashé (et non crypté) grâce à la fonction sha1().
Elle génère une suite de 40 caractères, et en matière de sécurité, je vous la conseille. :)

La connexion

Si vous gérez déjà votre équipe ou avez déjà développé votre site, vous devriez avoir une page de connexion, utilisée pour s'identifier à l'administration.
Cette page crée des sessions, permettant ainsi aux utilisateurs d'accéder aux pages de l'admin !

Plutôt que de faire une requête par page pour sélectionner les permissions, j'ai décidé de stocker tous les droits dans une session. Cela est beaucoup plus optimisé. ^^

Partons du principe que votre script ressemble à ça :

<?php
 
### Récupération des données ###
 
### Requêtes & conditions ###
 
### Création des sessions si c'est bon ###
 
### Formulaire ###
 
?>

(C'est juste la structure, hein. :p )

Nous n'aurons à modifier que la partie sur la création des sessions. ;)

Voici ce que vous devez ajouter :

<?php
 
$pseudo = $_POST['pseudo']; // Le pseudo récupéré dans le formulaire
 
$select2 = mysql_query("SELECT * FROM users WHERE AND pseudo = '$pseudo' ")or die(mysql_error());
$don = mysql_fetch_assoc($select2);
 
$select = mysql_query('SELECT * FROM permissions WHERE id = "'.$don['id_groupe'].'" ')or die(mysql_error());
$donnees = mysql_fetch_assoc($select);
 
$_SESSION['pseudo'] = $don['pseudo'];
$_SESSION['droits'] = addslashes($donnees['permissions']); // ATTENTION : remarquez ici l'utilisation de la fonction addslashes : sans elle, je ne récupérerais qu'une partie des permissions. Les permissions sont comme ça : 0\0\0\0\etc. Sans addslashes, je ne récupèrerais que le premier 0 !
 
?>

Voilà, j'espère que vous avez suivi. :p

Si je récapitule bien, nous avons fait l'ajout d'un groupe, la modification d'un groupe, la suppression d'un groupe, l'ajout d'un utilisateur et la création des sessions de permission !
Vous vous direz que c'est fini, mais en fait non !

Il nous reste un petit détail à régler : la sécurité de vos pages.
En effet, c'est bien beau de faire tout ça mais si vous ne protégez pas vos pages, cela ne servira à rien.

Voici ce que vous devez ajouter en haut de votre page pour créer un article (si vous avez une page qui effectue cette action) :

<?php session_start();
 
define ('ECRIRE_ARTICLE', 0x01); // Nous définissons les constantes de droits
define ('SUPPRIMER_ARTICLE', 0x02); // Une constante = un droit
define ('MODIFIER_ARTICLE', 0x08); // Pour savoir à quoi correspondent les valeurs des constantes, allez ici : http://www.siteduzero.com/tuto-3-6518-1-introduction-aux-operateurs-de-bits.html#ss_part_6
 
  if (!((int)$_SESSION['droits'] & ECRIRE_ARTICLE)) 
  {
        echo 'Vous ne pouvez pas accéder à cette page !<br />';
        exit;
  }
?>

Notez que dans la condition, ECRIRE_ARTICLE est la constante qui s'occupe du droit pour écrire un article. Vous devez donc remplacer ECRIRE_ARTICLE par le nom d'une autre constante pour les autres pages.
Par exemple, dans la page pour modifier un article, vous devrez mettre ce code :

<?php session_start();
 
define ('ECRIRE_ARTICLE', 0x01); // Nous définissons les constantes de droits
define ('SUPPRIMER_ARTICLE', 0x02); // Une constante = un droit
define ('MODIFIER_ARTICLE', 0x08); // Pour savoir à quoi correspondent les valeurs des constantes, allez ici : http://www.siteduzero.com/tuto-3-6518-1-introduction-aux-operateurs-de-bits.html#ss_part_6
 
  if (!((int)$_SESSION['droits'] & MODIFIER_ARTICLE)) 
  {
        echo 'Vous ne pouvez pas accéder à cette page !<br />';
        exit;
  }
?>

Et voilà !

Tout fonctionne parfaitement, mais je vais vous indiquer dans la partie suivante comment ajouter des permissions au script. :)

Ajouter des permissions

Bon, tous les scripts sont finis ; mais nous allons les modifier.

Eh, mais pourquoi nous dis-tu de créer la page avec ce contenu si après tu veux le modifier ? :colere2:

Ici, nous allons modifier deux pages : ajouter_gr_perm.php (ajout d'un groupe) et modifier_gr_perm.php (modification d'un groupe).

Ajouter un groupe

Premièrement, nous allons modifier les déclarations de constantes en haut de la page :

<?php
define ('ECRIRE_ARTICLE', 0x01); // Nous définissons les constantes de droits
define ('SUPPRIMER_ARTICLE', 0x02); // Une constante = un droit
define ('MODIFIER_ARTICLE', 0x08); // Pour savoir à quoi correspondent les valeurs des constantes, allez ici : http://www.siteduzero.com/tuto-3-6518-1-introduction-aux-operateurs-de-bits.html#ss_part_6
define ('Add_gr_perm', 0x10);
define ('Mod_gr_perm', 0x20);
define ('Add_user', 0x40);
?>

Ici, j'ai ajouté trois constantes : deux pour ajouter / modifier un groupe de permissions, et la troisième pour ajouter un utilisateur.
Si l'on regarde plus précisément, on voit que les valeurs des constantes ont elles aussi changé !

En effet, à chaque nouvelle permission, nous devons changer la valeur de la constante, logique.
Voici les différentes valeurs que vous pouvez mettre :

<tableau>
<ligne>
<entete>0x01</entete>
<entete>0x02</entete>
<entete>0x04</entete>
<entete>0x08</entete>
<entete>0x10</entete>
<entete>0x20</entete>
<entete>0x40</entete>
<entete>0x80</entete>
<entete>0x100</entete>
<entete>0x200</entete>
<entete>0x400</entete>
<entete>0x800</entete>
<entete>0x1000</entete>
<entete>0x2000</entete>
<entete>0x4000</entete>
<entete>0x8000</entete>
</ligne>
</tableau>
Vous savez donc maintenant quoi mettre en contenu !

Maintenant, passons à la deuxième modification de cette page.
Cela concerne la partie qui récupère vos choix du formulaire ; ce que vous devez ajouter se situe après cette ligne :

<?php
        if( $_POST['Del_article'] == 'del_article_oui')  
        {
                $droits |= SUPPRIMER_ARTICLE;
        }
?>

Voici le code (à ajouter) :

<?php
        if( $_POST['Add_gr_perm'] == 'Add_gr_perm_oui')  
        {
                $droits |= Add_gr_perm;
        }
        if( $_POST['Mod_gr_perm'] == 'Mod_gr_perm_oui')
        {
                $droits |= Mod_gr_perm;
        }
        if( $_POST['Add_user'] == 'Add_user_oui')
        {
                $droits |= Add_user;
        }
?>

Bon. Dernière partie à modifier : le formulaire.

Nous allons ajouter trois listes, une pour chaque action. Voici le code HTML à ajouter au formulaire :

<label for="Add_gr_perm">Possibilité d'ajouter un groupe de permissions : </label>
       <select name="Add_gr_perm" id="Add_gr_perm">
           <option value="Add_gr_perm_oui">Oui</option>
                   <option value="Add_gr_perm_non">Non</option>
       </select><br />
<label for="Mod_gr_perm">Possibilité de modifier / supprimer un groupe de permissions : </label>
       <select name="Mod_gr_perm" id="Mod_gr_perm">
           <option value="Mod_gr_perm_oui">Oui</option>
                   <option value="Mod_gr_perm_non">Non</option>
       </select><br />
<label for="Add_user">Possibilité d'ajouter un utilisateur : </label>
       <select name="Add_user" id="Add_user">
           <option value="Add_user_oui">Oui</option>
                   <option value="Add_user_non">Non</option>
       </select><br />

Et voilà ! :)

Modification d'un groupe

Dans cette page, nous allons modifier à peu près les mêmes parties que pour l'ajout d'un groupe.

En premier, ajoutez au début les constantes à la suite de celles déjà existantes :

<?php define ('Add_gr_perm', 0x10);
        define ('Mod_gr_perm', 0x20);
        define ('Add_user', 0x40); ?>

Deuxièmement, à la suite de la ligne contenant cette condition :

<?php
    if (((int)$donnees['permissions'] & MODIFIER_ARTICLE)) 
    {
                $selected_mod_article = 1;
    }
?>

Vous devez ajouter :

<?php
          if (((int)$donnees['permissions'] & Add_gr_perm)) 
          {
                $selected_add_gr_perm = 1;
          }
        else
        {
                $selected_add_gr_perm = 0;
        }
        if (((int)$donnees['permissions'] & Mod_gr_perm)) 
          {
                $selected_mod_gr_perm = 1;
          }
        else
        {
                $selected_mod_gr_perm = 0;
        }
        if (((int)$donnees['permissions'] & Add_user)) 
          {
                $selected_add_user = 1;
          }
        else
        {
                $selected_add_user = 0;
        }       
?>

Troisièmement, vous devez (encore) modifier le formulaire pour ajouter :

<label for="Add_gr_perm">Possibilité d'ajouter un groupe de permissions : </label>
       <select name="Add_gr_perm" id="Add_gr_perm">
           <option value="Add_gr_perm_oui" <?php if($selected_add_gr_perm == 1) echo 'selected="selected"'; ?>>Oui</option>
                   <option value="Add_gr_perm_non" <?php if($selected_add_gr_perm == 0) echo 'selected="selected"'; ?>>Non</option>
       </select><br />
<label for="Mod_gr_perm">Possibilité de modifier / supprimer un groupe de permissions : </label>
       <select name="Mod_gr_perm" id="Mod_gr_perm">
           <option value="Mod_gr_perm_oui" <?php if($selected_mod_gr_perm == 1) echo 'selected="selected"'; ?>>Oui</option>
                   <option value="Mod_gr_perm_non" <?php if($selected_mod_gr_perm == 0) echo 'selected="selected"'; ?>>Non</option>
       </select><br />
<label for="Add_user">Possibilité d'ajouter un utilisateur : </label>
       <select name="Add_user" id="Add_user">
           <option value="Add_user_oui" <?php if($selected_add_user == 1) echo 'selected="selected"'; ?>>Oui</option>
                   <option value="Add_user_non" <?php if($selected_add_user == 0) echo 'selected="selected"'; ?>>Non</option>
       </select><br />

Enfin, au niveau du traitement du formulaire, juste après :

<?php
        if( $_POST['Del_article'] == 'del_article_oui')  
        {
                $droits |= SUPPRIMER_ARTICLE;
        }
?>

vous devez ajouter :

<?php
        if( $_POST['Add_gr_perm'] == 'Add_gr_perm_oui')  
        {
                $droits |= Add_gr_perm;
        }
        if( $_POST['Mod_gr_perm'] == 'Mod_gr_perm_oui')
        {
                $droits |= Mod_gr_perm;
        }
        if( $_POST['Add_user'] == 'Add_user_oui')
        {
                $droits |= Add_user;
        }
?>

Voilà.
J'espère que vous avez compris comment ajouter des droits.
J'avoue que cela peut paraître déroutant au début (quand on voit ce qu'il faut modifier ^^ ), mais après la gestion se passe très bien, et vous serez contents d'avoir fait tout ça !

D'autant plus que vous pourrez améliorer votre site en créant des groupes « publics » :

  • Visiteurs : ceux n'étant pas inscrits, vous pouvez indiquer ce qu'ils peuvent faire ;

  • Bannis : créez le groupe en ne mettant aucune permission !

  • Lecture seule : je pense que vous avez compris à quoi ce groupe servait. ^^

Il me semble que maintenant ce tutoriel est entièrement fini, j'espère donc qu'il vous a bien instruits.

Pour toute question, commentaire, vous pouvez poster un message grâce aux « commentaires de tuto ». :)

Bonne chance pour la mise en place des scripts sur votre site !

Exemple de certificat de réussite
Exemple de certificat de réussite