Chapitre 13. Identification en PHP

Table des matières

Préliminaires : la fonction header
Contrôle des mots de passe
Amélioration : plusieurs utilisateurs
Séparer les données du traitement
Cacher les mots de passe
Crypter les mots de passe

Nous n'aborderons ici que l'identification gérée par le navigateur.

Préliminaires : la fonction header

La fonction header permet de spécifier une en-tête HTTP lors de l'envoi des fichiers HTML. Reportez-vous à HTTP 1.1 Specification pour plus d'informations sur les en-têtes HTTP.

Remarque

La fonction header doit être appelée avant la première balise HTML, et avant n'importe quel envoi de commande PHP.

Nous allons utiliser ici cette fonction pour demander la vérification d'une identité.

Pour cela il suffit de faire commencer votre programme PHP par la commande :

        header("WWW-Authenticate: Basic realm='private'");

qui a pour effet de faire demander (et retenir) un nom et un mot de passe par le navigateur.

Vous pouvez ainsi tester le programme élémentaire suivant (ident-exple01.php) :

        <?php
        if (!isset($PHP_AUTH_USER) || !isset($PHP_AUTH_PW)) {
          header("WWW-Authenticate: Basic realm='private'");
        } else {
          echo "<html><body>";
          echo "les données connues sont $PHP_AUTH_USER et $PHP_AUTH_PW\n";
          echo "</body></html>";
        }
        ?>

Vous pouvez remarquer que la demande n'est faite que lors de la première exécution de la page. La seule façon, avec le programme tel qu'il est écrit, de devoir répondre à nouveau à la question est de sortir de votre navigateur (fermer toutes les fenêtres du navigateur, oui !) et de le relancer.

Attention !

Si votre serveur est configuré en safe mode vous n'aurez pas accès aux variables $PHP_AUTH_USER et $PHP_AUTH_PW mais à $_SERVER["PHP_AUTH_USER"] et à $_SERVER["PHP_AUTH_PW"]

Si votre serveur est configuré en safe mode, voir aussi la section intitulée « Traitement des données d'un formulaire en PHP ».

C'est cette propriété que nous allons utiliser pour gérer l'identification des utilisateurs.