Introduction

Introduction – Un exemple d'utilisation

Tutorial pour Auth

Notre but dans ce "mini tutoriel " est de mettre en place un système qui sécurise votre site avec un mécanisme d'identification très simple.

En haut du site à sécuriser, placez ce petit bout de code:

Exemple typique d'utilisation de PEAR::Auth

<?php
require_once "Auth.php";

// Prend trois arguments : dernière utilisateur, le statut de l'autorisation
// et l'objet Auth
// Nous ne l'utilisons pas dans cette démonstration simple - mais vous pouvez
// l'utiliser pour faire d'autres choses.
function loginFunction($username null$status null, &$auth null)
{
    
/*
     * Changez la sortie HTML pour que cela s'intègre à votre application.
     */
    
echo "<form method=\"post\" action=\"test.php\">";
    echo 
"<input type=\"text\" name=\"username\">";
    echo 
"<input type=\"password\" name=\"password\">";
    echo 
"<input type=\"submit\">";
    echo 
"</form>";
}

$options = array(
   
'dsn' => "mysql://user:password@localhost/database",
);
$a = new Auth("DB"$options"loginFunction");

$a->start();

if (
$a->checkAuth()) {
    
/*
     * L'affichage de votre site va ici.
     */
}
?>

Ces quelques lignes de codes instantient le système d'identification.

La première ligne dans le script ci-dessus inclut le fichier depuis votre dossier PEAR. Il contient tout le code nécessaire pour exécuter PEAR::Auth. Puis, nous définissions une fonction pour afficher le formulaire d'identification que le visiteur utilisera pour entrer ses informations d'identification. Vous pouvez évidemment modifier le formattage HTML de cette fonction.

Vû que vous voulez utiliser une base de données pour vérifier les informations d'identification, nous créons maintenant la variable $dsn qui contient un DSN valide qui sera utilisé pour se connecter à la base de données via PEAR::DB. Pour le schéma par défaut des tables de la base de données ou pour utiliser une méthode de stockage différente, lisez ce qui suit.

Après cela, nous créons un objet d'identification. Le premier paramètre définit le nom du conténaire de stockage. Parce que nous voulons utiliser un conténaire de base de données pour le stockage, nous passons "DB" ici. Le second paramètre est le paramètre de connection pour le driver du conténaire. Nous utilisons donc le DSN précédemment défini. Le troisième paramètre est le nom de notre fonction qui nous avons définie au début du script. Elle affiche le formulaire d'identification.

Maintenant que notre objet d'identification est initialisé, nous devons vérifier si l'utilisateur est déjà connecté. Ce que nous faisons avec la fonction checkAuth(). Si elle retourne TRUE, nous pouvons passer le contenu de la page à l'utilisateur.

Utilisation d'une identification optionelle

<?php
// Dans ce test, le fichier est nommé "test.php".

require_once "Auth.php";

function 
loginFunction()
{
     
/*
      * Adaptez le HTML à votre application.
      */
     
echo "<form method=\"post\" action=\"test.php?login=1\">";
     echo 
"<input type=\"text\" name=\"username\">";
     echo 
"<input type=\"password\" name=\"password\">";
     echo 
"<input type=\"submit\">";
     echo 
"</form>";
}

if (isset(
$_GET['login']) && $_GET['login'] == 1) {
     
$optional true;
} else {
     
$optional false;
}

$options = array(
   
'dsn' => "mysql://user:password@localhost/database",
);
$a = new Auth("DB"$options"loginFunction"$optional);

$a->start();

echo 
"Tout le monde peut lire ce texte !<br />";

if (!isset(
$_GET['login'])) {
     echo 
"<a href=\"test.php?login=1\">Cliquez ici pour vous identifier.</a>\n";
}

if (
$a->getAuth()) {
     echo 
"Ce texte n'est affiché que si vous êtes identifié !";
}
?>

C'est un bon exemple pour montrer les fonctionnalités optionnelles d'identification : Le dernier paramètre $optional peut valoir soit TRUE, soit FALSE. S'il vaut FALSE, le formulaire d'identification n'est pas affiché et l'utilisateur ne verra que le texte :"Tout le monde peut lire ce texte !". S'il clique sur le lien en dessous de ce texte, il obtient la même page mais avecle paramètre GET "login=1". Maintenant, il peut entrer ses informations d'identification dans le formulaire. S'il s'identifie avec succès, il peut alors lire le texte : "Tout le monde peut lire ce texte !" ainsi que le texte :"Ce texte n'est lu que si vous êtes identifié !".

Fonctionnalité de déconnexion

L'exemple suivant effectue une "déconnexion" pour l'utilisateur courant et affiche de nouveau le formulaire d'identification.

<?php
$myauth
->start();
if (
$_GET['action'] == "logout" && $myauth->checkAuth()) {
    
$myauth->logout();
    
$myauth->start();
}
?>

Dans les passages suivants, nous allons voir plus d'informations détaillées sur les fonctions de la classe PEAR::Auth.

This SQL statement creates a table usable under the default database authentication scheme using MySQL:

CREATE TABLE auth (
   username VARCHAR(50) default '' NOT NULL,
   password VARCHAR(32) default '' NOT NULL,
   PRIMARY KEY (username),
   KEY (password)
);

Voici la table et les noms de champs nécessaires pour effectuer une identification. Lors du hashage du mot de passe avec l'algorithme md5, qui est la méthode de cryptage par défaut dans la classe PEAR::Auth, la colonne du mot de passe doit pouvoir accueillir 32 caractères de long. Lors de l'utilisation d'une autre méthode de cryptage comme DES ("UNIX crypt"), la taille de la colonne doit être modifiée en fonction.