Amélioration : plusieurs utilisateurs

Il est rare, quand l'accès à une page est contrôlée par un mot de passe, que tous les utilisateurs aient les mêmes droits.

Il faut donc pouvoir détecter l'identité de la personne concernée au moment de la saisie du mot de passe. Pour cela on donnera un mot de passe différent à chaque utilisateur. Cela nous permet d'avoir l'exemple suivant (ident-exple03.php) dans lequel les renseignements sont rangés dans un tableau de chaînes de caractères, une chaîne par personne, présentée sous la forme « vrai nom/nom d'utilisateur/mot de passe » :

        <?php
        // la liste des informations
        $liste=array("Jean Némar/nemar/jjjj",
                     "Sophie Fonfec/fonfec/ssss",
                     "Yves Adrouille-Toultan/adrouille/yyyy");
        // création des tableaux
        for ($i=0;$i<count($liste);$i++) {
          $l=explode("/",trim($liste[$i]));
          $nom[$i]=$l[0];  // identité réelle de l'utilisateur n°i
          $user[$i]=$l[1]; // identifiant de l'utilisateur n°i sur le système
          $pass[$i]=$l[2]; // mot de passe de l'utilisateur n°i
        }
        $nbusers=count($liste);
        // contrôle de l'identité
        $ok=-1; // on démarre sans connaître l'utilisateur
        for ($i=0;$i<$nbusers;$i++) {
          if (($PHP_AUTH_USER==$user[$i]) && ($PHP_AUTH_PW==$pass[$i])) {
            // on a reconnu un utilisateur -> on garde son numéro
            $ok=$i;
          }
        }
        // si l'identification a raté, $ok contient toujours -1
        // on demande le nom et le mot de passe
        if ($ok==-1) {
          header("WWW-Authenticate: Basic realm='private'");
          return; // On notera l'utilisation de l'instruction return
                  // pour sortir du programme.
        }
        // si on arrive ici, c'est que l'identification a réussi
        // et que $ok contient le numéro de l'utilisateur
        echo "<html><body>";
        echo "Bravo, identification réussie.<br />\n";
        echo "vous êtes <em>nom[$ok]</em>,\n";
        echo "votre identifiant est <em>$user[$ok]</em>,\n";
        echo "votre mot de passe est <em>$pass[$ok]</em>.<br />\n";
        // À vous d'ajouter ici tout ce qui concerne l'utilisateur
        // ...
        // ...
        echo "</body></html>";
        ?>