Colorscheme

PEAR PHP Tutorial


Wenn du auf der Suche nach einem PHP Tutorial bist, findest du hier ein kostenloses im PDF Format (oder als Online-Version): PHP Tutorial PDF

Da ich die Klassenbibliothek von PEAR für sehr hilfreich halte, will ich allen PHP-Interessierten hier einen kurzen Einstieg ermöglichen, wer noch nicht weiß was PEAR ist kann das hier schnell nachlesen: PEAR und Smarty – sauberer, sicherer Code und enorme Geschwindigkeit.

Die Klassenbibliothek PEAR kann jeder auf seinem Webserver nutzen, entweder sind die Klassen schon installiert und man kann die Standardpfade nutzen, oder man läd sich die benötigten Pakete von der PEAR-Website. Ich gehe mal vom letzten Fall aus.

Als erstes wollen wir einfach nur eine Verbindung zu unserer Datenbank herstellen, dazu laden wir als erstes das Datenbank-Paket herunter: Package Information: DB, unter “Download” gibt es das ersehnte Paket.

Nun packen wir dieses ins Root-Verzeichnis des Servers, also dort wo auch die index.php liegt, die Struktur sollte nun folgendermaßen aussehen:

- root
- index.php
- DB (Ordner)
- DB.php

Nun gehen wir in die index.php und holen uns erstmal das Datenbank-Paket in diese Datei mit:

require_once 'DB/DB.php';

und darunter verbinden wir uns mit der Datenbank und führen eine einfache SELECT-Anweisung aus (funktioniert nur wenn auch die Tabellen und Daten in der eingetragenen Datenbank vorhanden sind):

$dsn = array(
'phptype' => 'pgsql',
'username' => 'someuser',
'password' => 'apasswd',
'hostspec' => 'localhost',
'database' => 'thedb',
);

$dbh = DB::connect($dsn);
$res =& $dbh->query("SELECT username FROM user");
$dbh->disconnect();

In der Variablen “dsn” speichern wir die Verbindungsdaten zur Datenbank, auf die wir bei “connect” zugreifen. Nun können wir mithilfe des “DBH”-Objekts auf die Methoden der Datenbankklasse zugreifen und ein Datenbank-Query ausführen. Wer noch nie mit einer Datenbank und/oder MySql gearbeitet hat, für den dürfte dies hier etwas schwierig zu verstehen sein, alle anderen sollten die Syntax leicht durchschauen.

Formulare
Einfache Datenbank-Abfragen sind ja schon ganz nett, aber den wirklichen Nutzen von PEAR sieht man, wie ich finde, erst bei der Erstellung von Formularen. Mit PEAR lassen sich Formulare, deren Verarbeitung und die Fehlerbehandlung viel schneller, sicherer und übersichtlicher gestalten.

Für die Formulare ist das Paket “Quickform” zuständig, welches sich im Bereich “HTML” aufhält.

Ein kleines Registrierungsformular läßt sich damit schon folgendermaßen erstellen:
<?php
require 'HTML/QuickForm.php';

$form = new HTML_QuickForm('mainForm', 'post');

$form->applyFilter('__ALL__','trim');

$form->addElement('text', 'username', 'Username:');
$form->addElement('password', 'pass', 'Passwort:');
$form->addElement('password', 'pass2', 'Passwort wiederholen:');
$form->addElement('text', 'email', 'E-Mail:');
$form->addElement('submit', null, 'Registrieren');

$form->addRule('username', 'Bitte hier deinen Benutzernamen eingeben:', 'required');
$form->addRule('pass', 'Bitte hier dein Passwort eingeben:', 'required');
$form->addRule('pass2', 'Bitte hier das Passwort wiederholt eingeben:', 'required');
$form->addRule('email', 'Bitte hier deine Email-Adresse eingeben:', 'required');

$form->addRule('username', 'Dein Benutzername muss mindestens 5 Buchstaben lang sein', 'minlength', 5);
$form->addRule('username', 'Dein Benutzername darf maximal 40 Buchstaben lang sein', 'maxlength', 40);

$form->addRule('pass', 'Dein Passwort muss mindestens 5 Buchstaben lang sein', 'minlength', 5);
$form->addRule('pass', 'Dein Passwort darf maximal 20 Buchstaben lang sein', 'maxlength', 20);

$form->addRule(array('pass', 'pass2'), 'Beide Passwörter müssen übereinstimmen', 'compare', null);

$form->addRule('email', 'Dies ist keine gültige Emailadresse', 'email');

if ($form->validate()) {
$form->process('process_data', false);
} else {
echo '<fieldset><legend>Registrieren</legend>';
$form->display();
echo '</fieldset>';

}

?>

Dabei kann der Code auf den ersten Blick schon verwirren, allerdings ist er wirklich nicht schwierig zu verstehen:

Mit $form = new HTML_QuickForm(‘mainForm’, ‘post’); legen wir unser Formular-Objekt an, man kann sich das wie eine leere Schublade vorstellen. Mit addElement legen wir in diese Schublade nun Elemente des Formulars, dies können Input-Felder sein, aber auch ein Button oder ein Auswahlfeld.

Natürlich könnten wir das Formular jetzt so abschicken, doch die einzelnen Felder müssen noch geprüft werden, schliesslich sollen schlimme Zeitgenossen davon abgehalten werden, das sie eine sicherheits-Lücke ausnutzen, darum müssen wir die Sicherheitslücken schliessen.

Mit addRule können wir einzelnen Feldern gewiße Einschränken auferlegen und bei einer fehlerhaften Eingabe des Users einen Hinweis ausgeben. Wurden dann alle Felder korrekt ausgefüllt wird das Formular “validiert” und wir können die Daten in einer eigenen Funktion “process_data” auswerten.

Die wichtigsten Links zu PEAR:


Verwandte Artikel
  1. Webdesign Guide – User-Modul: Login
  2. Webdesign Guide – User-Modul: Registrieren
  3. Programmierung eines Registrierungsformular – was muss man beachten
  4. Webdesign Guide – Modul: Kontaktformular und Dankesseite
  5. PEAR und Smarty – sauberer, sicherer Code und enorme Geschwindigkeit

am Juli 11, 2006 um 17:29 Uhr | in Webdesign | 8 Kommentare


8 Kommentare
  1. Enrico, Juli 11, 2006:

    Danke, weiter so.

  2. Mediengestalter, Juli 12, 2006:

    Funktioniert auch soetwas ?

    $form->addElement(‘text’, ‘user[1][name]‘, ‘Username:’);

  3. Christian Strang, Juli 12, 2006:

    Willst du eine Auswahlliste erstellen? Die Methode “addElement” kann folgende Werte annehmen: http://pear.php.net/manual/en/package.html.html-quickform.intro-elements.php

  4. acorri, Juli 14, 2006:

    Warum das Rad neu erfinden, wenn man auf erprobtes zurückgreifen kann? Darum danke für den Hinweis. Auf der der Seite zum DB Package steht “This package been superseded by MDB2 but is still maintained for bugs and security fixes”. Also warum nicht MDB2 statt DB benutzen?

  5. Christian Strang, Juli 14, 2006:

    Weiß nicht, ich nutze es weil ich hoffe das es ausgereifter ist als MDB2

  6. Patrick, Dezember 14, 2006:

    Hier gibt vom Galileo Verlag ein kostenloses Buch zum Online-Lesen oder runterladen:

    http://www.galileocomputing.de/openbook/php_pear/

    Greetings

  7. Christian Strang, Dezember 15, 2006:

    Schöner Link, danke! Habe mir das Buch vor ein paar Monaten gekauft, leider zuviel Inhalt den ich nicht brauche. Wer richtig in PEAR einsteigen will und auch mehr als 40% der Pakete nutzt, für den ist das Buch als Einstieg zu empfehlen.

  8. Internetagentur, März 8, 2009:

    Hallo,

    ich habe einen eigenen Root-Server und habe PEAR unter /usr/share/PEAR … wie muss ich das nun in einer Seite einbinden?

Tut mir leid, die Kommentarfunktion für diesen Beitrag ist geschlossen.