Mal in PHP reinschnuppern...

von MAD/OS

PHP? "Perfekte Homepage Programmierung"? Keineswegs. Das wäre auch zu einfach. Trotzdem ist PHP ein Werkzeug, mit dem dieser Traum in greifbare Nähe rückt.

Als 1994 die ersten Versionen von PHP entstanden, war es nicht viel mehr als ein kleiner Parser und einige Werkzeuge, die vom Autor Rasmus Lerdorf unter dem Namen "Personal Home Page Tools" zusammengefasst wurden. PHP3 und die heute aktuelle Version PHP4 haben sich jedoch als "Hypertext Preprocessor" zu mächtigen Werkzeugen für die Erzeugung dynamischer Internetseiten entwickelt. PHP vereint die Vorzüge von Perl, Java, C++ und anderen Sprachen mit den Erfahrungen und Wünschen unzähliger Programmierer. Eine Sprache von Praktikern für Praktiker. Im Bereich dynamischer Webseiten ist PHP heute tatsächlich zum allgemeinen Standard geworden. Und außerdem, um es mit den Worten von Egon Schmid (Autor diverser Bücher zum Thema) zu sagen: "PHP ist cool! Yeah".

Doch genug der Vorrede. Wir wollen coden! Dafür benötigen wir ausnahmsweise einmal keinen Kompiler, keinen Linker und keinen Debugger. Wir brauchen einen Webserver. Denn PHP arbeitet - und das ist ja der Sinn des Ganzen - in enger Verknüpfung mit der Software, die auch die Webinhalte zum Browser des Besuchers überträgt. Im Unterschied zu anderen serverseitigen Sprachen wie Perl wird dabei kein neuer Prozess gestartet, der einen gesonderten Speicherbereich belegt. PHP ist sozusagen ein Plugin-Modul innerhalb der Serversoftware. Wir als Programmierer müssen also entweder den Service unseres Webspace-Anbieters nutzen oder, und das ist sicher sinnvoller, wir installieren uns einen eigenen lokalen Webserver und das passende PHP-Paket. Einen Webserver finden wir unter z.B. bei www.Apache.org oder www.iMatix.com, PHP selbst gibt es zum Beispiel unter der Adresse www.php.net.

Wenn die langwierige und nervenaufreibende Konfiguration der Software erledigt ist (aus diesem Grund will ich im Rahmen dieses kleinen Tutorials nicht näher darauf eingehen), kann es los gehen. Quellcode, endlich.
<html>
<head><title>Hallo Welt!</title></head>
<body>
<?php echo "Hallo Welt!"; ?>
</body>
</html>
Wenn diese Datei mit der Endung .php3 oder .php abgespeichert und über den Browser aufgerufen wird, passiert folgendes: Der Webserver erkennt, dass er ein PHP-Skript bearbeiten muss; er öffnet die Datei und führt alle Codes aus, die zwischen den Tags <?php und ?> auftauchen (die Kurzform <? und ?> ist allerdings gebräuchlicher). An Stelle der Codes werden die Ausgaben geschrieben und der so entstandene Text an den Client (der Browser der Anwenders) geschickt. Ungewohnt ist dabei anfangs, dass der Anwender nichts von diesem Code bemerkt. Er sieht nur eine Seite mit dem Text "Hallo Welt!", die auch in der Quelltextansicht als ganz normales HTML erscheint. Das ist einer der Vorteile von PHP: Es funktioniert unabhängig vom Browser, selbst ein Netscape 2.0 oder Lynx stellt kein Problem dar - passender HTML-Code vorausgesetzt.

Spätestens jetzt sollte man sich das PHP-Manual von www.php.net herunterladen (die WinHelp-Version ist am empfehlenswertesten), denn das folgende Beispiel ist bereits wesentlich komplexer. Verwirrend ist anfangs vor allem die bunte Mischung von PHP- und HTML-Code. Der besseren Übersicht wegen sind die PHP-Teile farbig hervorgehoben. Der Einsatz eines speziellen Editors wie zum Beispiel "HomeSite" macht hier wirklich Sinn.

<html>
<head><title>Email-Formular</title></head>
<body>
<h1>Email-Formular</h1>
<form action="mailform.php3" method="post"><?

if($nachricht and $name == "") {
  ?><font color=#ffcc00>Bitte ergänzen Sie Ihren Namen:</font><?
  $fehler=true;
} else {
  ?>Ihr Name:<?
}

?><br>
<input name="name" size=50 value="<? echo $name; ?>"><br><?

if($nachricht and $email == "") {
  ?><font color=#ffcc00>Bitte ergänzen Sie Ihre Email-Adresse:</font><?
  $fehler=true;
} elseif($nachricht and ! ereg("^[^@]{2,}@.{3,}\.[^.]{2,}$", $email)) {
  ?><font color=#ffcc00>Bitte verwenden Sie eine gültige Email-Adresse:</font><?
  $fehler=true;
} else {
  ?>Ihre Email-Adresse:<?
}

?><br>
<input name="email" size=50 value="<? echo $email; ?>"><br>
Ihre Nachricht:<br>
<textarea name="nachricht" cols=50 rows=10><?
$nachricht = str_replace('\"', '"', $nachricht);
$nachricht = str_replace('\\\'', '\'', $nachricht);
$nachricht = str_replace('\\\\', '\\', $nachricht);
echo $nachricht;
?></textarea><br><?

if($nachricht and ! $fehler) {
  mail('thiemo.maettig@web.de', 'Email-Formular', $nachricht, "From: $name <$email>");
  ?><p>Ihre Nachricht wurde erfolgreich versandt.</p><?
} else {
  ?><input type=submit value="Email abschicken"><?
}

?></form>
</body>
</html>


Bei diesem Beispiel handelt es sich, wie man vieleicht erahnen kann, um ein Feedback-Formular. Es werden Eingabefelder für Name, E-Mail und Nachricht präsentiert, die der Besucher füllen und abschicken kann. Der Clou dabei ist nun, dass das Skript auf fehlerhafte Eingaben intelligent reagiert. Wird beispielsweise der Name vergessen, dann wird der Versuch, diese unvollständige Nachricht abzuschicken, mit einem Hinweis beantwortet. Das Formular und die Eingaben darin gehen dabei nicht verloren. Sie werden sofort wieder angezeigt, so dass der Anwender seinen Fehler ganz einfach korrigieren kann.

Selbstverständlich ist diese Vorgehensweise auch mit jeder anderen Sprache, zum Beispiel Perl, möglich. PHP macht es dem Programmierer jedoch ungemein leicht. Um die Eingaben "name", "email" und "nachricht", die das Formular per Get- oder Post-Methode an das Skript übergibt, muss man sich zum Beispiel überhaupt nicht kümmern. Sie stehen innerhalb des Skriptes automatisch als Variablen $name, $email und $nachricht zur Verfügung.

Ach ja: Variablen werden in PHP generell mit einem Dollarzeichen begonnen. Typen gibt es allerdings keine. PHP erkennt selbst, dass es sich bei $a = 5; um eine Zahl, bei $text = "I love PHP"; um einen Textstring handelt. Selbst Konvertierungen sind möglich. Der Ausdruck (5 + "2 Äpfel") wird zum Beispiel korrekt als 7 errechnet.

Das Versenden von E-Mails ist ebenfalls sehr simpel - der Befehl mail() mit den passenden Parametern genügt. Komplizierter wird es beim Thema "reguläre Ausdrücke". Mit ereg(), preg() und den verwandten Befehlen stehen mächtige Werkzeuge zur Auswertung und Manipulation von Texten zur Verfügung. Die Frage, was man damit genau machen kann, füllt ganze Bücher. In diesem Beispiel wird ein relativ einfacher regulärer Ausdruck verwendet, um gültige und ungültige Email-Adressen zu unterscheiden.

Mehr als einen kurzen Einblick in die Welt von PHP soll dieser Text nicht bieten. Gerade auf die große Stärke von PHP, nämlich die Schnittstelle zu Datenbanken wie MySQL und PostgreSQL, kann im Rahmen dieses kleinen Artikels nicht eingegangen werden. Die Beschäftigung damit ist jedoch mehr als lohnenswert! Tutorials, Dokumentationen und jede erdenkliche Hilfe zu diesem nahezu grenzenlosen Thema findet man wie immer im Internet. Die Seite www.php-center.de/tutorial ist beispielsweise ein guter und vor allem deutscher Einstieg.

Viel Spaß wünscht...

(mad/os)