Einführung

Einführung -- Eine Beispielanwendung

Auth-Tutorial

Unser Ziel für dieses Mini-Tutorial ist es, ein System aufzusetzen, die Ihre Seite mit einer einfach zu benutzenden Authentifizierung versieht.

Am Anfang der zu sichernden Seite platzieren Sie folgenden Code:

Beispiel 29-1. Typische Benutzung von PEAR::Auth

require_once "Auth.php";

// Erwartet drei Argumente: der zuletzt übergebene Benutzername,
// die Authorisations-Zustand und das Auth-Objekt
// Sie werden in diesem einfachen Beispiel nicht verwendet --
// aber das sollte Sie nicht davon abhalten nützliche Dinge amit zu tun.
function loginFunction($username = null, $status = null, &$auth = null)
{
    /*
     * Change the HTML output so that it fits to your
     * 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()) {
    /*
     * The output of your site goes here.
     */
}

Die wenigen Zeilen Code initialiseren die Authentifizierung.

Die erste Zeile im obigen Skript inkludiert die Datei aus dem PEAR-Verzeichnis. Es enthält alle notwendigen Code, um PEAR::Auth auszuführen. Als nächstes wird eine Funktion definiert, die das Login-Formular darstellt, mit dem sich ein Besucher der Seite anmelden muss. Sie können die HTML-Formatierungen beliebig ändern.

Da wir eine Datenbank benutzen wollen, um die Login-Daten zu überprüfen, benötigen wir einen korrekten DSN in der Variable $dsn. Er wird benutzt, um sich mit der Datenbank zu verbinden über PEAR::DB. Informationen zum Tabellenschema für die Datenbank oder für die Benutzung anderer Container finden Sie weiter unten.

Danach erzeugen wir das Auth-Objekt. Der erste Parameter gibt den zuverwendenen Speicher-Container an. Da wir eine Datenbank benutzen, übergeben wir DB. Der zweite Parameter ist der Verbindungsparameter für den Speicher-Container. Wir setzen hier den DSN ein. Der dritte Parameter ist der Name der Funktion. die das Login-Formular enthält.

Das Objekt wurde initialisiert und wir müssen prüfen, ob ein Benutzer angemeldet ist. Dazu rufen wir die Methde checkAuth() auf. Wenn sie TRUE zurückliefert, können wir den Inhalt der Seite weiter ausführen.

In der folgenden Passage betrachten wir die Methoden der Klasse PEAR::Auth genauer.

Diese SQL-Anweisungen (unter MySQL) erzeugen eine Tabelle mit dem Standardschema für die Authentifizierung:

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

Diese Tabelle und ihre Spaltenname sind erforderlich für eine funktionierende Authentifizerung über eine Datenbank notwendig. Wenn das Passwort per standardmäßig per MD5-Hash-Funktion kodiert wird, dann muss die Passwort-Spalte mindestens 32 Zeichen aufnehmen können. Wird eine andere Methode benutzt, wie z.B. DES („UNIX crypt), dann muss die Größe entsprechend angepasst werden.