previousAuth (Previous) (Next) Auth Optionsnext

View this page in Last updated: Sun, 18 Oct 2009
English | Brazilian Portuguese | Chinese | Dutch | French | German | Hungarian | Japanese | Polish | Russian | Spanish | Turkish

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.

previousAuth (Previous) (Next) Auth Optionsnext

Download Documentation Last updated: Sun, 18 Oct 2009
Do you think that something on this page is wrong? Please file a bug report or add a note.
User Notes:
Note by: cronimson@yahoo.com
example does not work and i have in the internet for examples and all of them does not work also. can someone post a working sample.. this is frustrating.
Note by: wiesemann
@shelleykm..., please use the support offers on pear.php.net for asking support questions. About the usage of DB here: The example is just a little bit older. If you have suggestions about how it could be improved, please open a bug report via the link that is offered on the footer of this page (next to the link that you've used to file your user note).
Note by: wiesemann
@ts..., the comma isn't needed, that's right. But this isn't an error. PHP accepts the comma, and it makes people's life easier in some sense because you don't have to worry about adding the comma if you add another key/value pair to the $options array.
Note by: ts@websafe.pl
Isn't there an error?

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

right after /database", the comma is not needed, or am I wrong?
Note by: shelleykm@adelphia.net
Thanks to the above poster for the encryption hint. Unfortunately I don't have it working yet.

Also, why is the "DB" connector listed here? In the PEAR doc it even says DB has been deprecated in favor of MDB2. Why give newbies examples with includes that aren't recommended to use anymore?
Note by: Mario
Just adding one clarification for newbies (as I am).

If you want to test the 2 examples, don't forget that the password in your table must be encrypted.