![]() |
![]() |
|||
| Aufgaben Dokus Links | ||||
|
Nach den Grundlagen der HTML-Programmierung und der Vorstellung von FORMS kommt nun der nächste Schritt. PHP ist eine Sprache, die auf dem Webserver ausgeführt wird und so dynamisch Webseiten erstellt. Die wichtigsten Punkte, die PHP so geeignet machen, sind die sehr einfache Auswertung von FORMS und der Zugriff auf Datenbanken.
Zuerst folgt ein kurzer Überblick über die Entstehung von PHP, danach die grundlegenden Sprachelemente, wie Variablen, Funktionsaufrufe, Schleifen, bedingte Ausführung und Ausgabe von HTML-Code. Als nächstes wird der Zugriff auf FORM-Daten erklärt.
|
PHP wurde von dem Kanadier Rasmus Lerdorf entwickelt, dem es zu lästig wurde, seine FORMS mit CGI-Skripten in Perl auszuwerten, und der sich auch einen leichteren Datenbankzugriff wünschte, ein Vorhaben, das mit Perl eher umständlich ist. Der ursprüngliche Name von PHP war PHP/FI, was für Personal Home Pages / Form Interpreter stand. Die neue Abkürzung ist ein Akronym im GNU Stil, und steht für PHP: Hypertext Preprocessor.
Die Syntax von PHP ähnelt teilweise der von C, Perl und Java. String- und Speicherverarbeitung wurde eher an Perl angelehnt, da diese mächtiger und einfacher zu benutzen sind. Ein einfaches Klassenmodell mit Vererbung ist an Java und C++ angelehnt.
PHP ist eine interpretierte Sprache und damit gut geeignet für kleine bis mittlere Webprojekte. Auch große Projekte lassen sich durchaus realisieren, jedoch werden mit komplexen Routinen die Grenzen erreicht. Solche Vorhaben lassen sich jedoch in C erstellen und als Modul zu PHP hinzufügen.
PHP kann als normales CGI-Programm laufen, oder als Modul in einen Webserver eingebettet werden, wobei zur Zeit der Apache-Server sowie die Produkte von Netscape und Microsoft unterstützt werden. Fast alle gebräuchlichen Unix-Varianten werden unterstützt, da das Programm im Quellcode vorliegt. Auch auf Windows ist PHP mit einigen Einschränkungen lauffähig.
Datenbanken werden von PHP über spezifische Funktionen angesprochen, als Abfragesprache wird SQL verwendet. PHP unterstützt eine große Zahl von DB-Systemen. Seit PHP 4 werden ausserdem Sessions unterstützt, und bald soll es möglich sein, PHP-Skripte in prekompilierter Form auszuführen.
|
|
PHP-Code wird direkt in die HTML-Seite geschrieben. Um für den PHP-Interpreter zu kennzeichnen, welche Teile der Seite er verarbeiten soll, muß der Code von einem öffnenden und einem schließenden Tag umgeben werden. Das öffnenden Tag ist <?, das schließende ?>. In einer HTML-Seite können beliebig viele solcher PHP-Blöcke enthalten sein. Aller Text zwischen den beiden Tags muß gültiger PHP-Code sein, HTML ist hier direkt nicht erlaubt, kann jedoch mit Funktionen von PHP erzeugt werden.
Das nachstehende Beispiel bindet einen Seitenkopf ein, gibt dann die aktuelle Zeit aus und fügt dann einen Seitenfuß ein. Die einzelnen Funktionen werden im Folgenden erklärt:
|
|
PHP-Code besteht aus einer Folge von Anweisungen. Das können zum Beispiel Variablenzuweisungen, Funktionsaufrufe oder Schleifen sein. Eine Anweisung kann wiederum einen Block von Anweisungen umfassen, wie im Falle von bedingter Ausführung oder von Schleifen.
Einzelne Anweisungen müssen voneinander getrennt werden. In PHP wird dazu das Semikolon (;) verwendet. Vor dem schließenden Tag braucht kein Semikolon gesetzt zu werden, es ist jedoch guter Programmierstil, dort trotzdem eines einzufügen. Dies verhindert Fehler, wenn nachträglich am Ende eines Blocks weitere Anweisungen eingefügt werden.
PHP verwendet untypisierte Variablen, d.h. es muß nicht festgelegt werden, ob Zahlen, Texte oder sonstige Werte in einer Variablen gespeichert werden sollen, PHP passt den Typ automatisch an die Verwendung an. So kann zum Beispiel mit einem String, der nur eine Zahl enthält, und einer Zahl ganz normal gerechnet werden.
Variablen beginnen in PHP mit einem Dollarzeichen, gefolgt von dem Variablenbezeichner (z.B. $a, $b, $text). Für Zuweisungen wird das einfache Gleichheitszeichen verwendet.
|
|
Mit PHP lassen sich nette Programme entwickeln, aber das Interessante dabei ist es, Text an den Browser auszugeben, bzw. in die ausgegebene HTML-Seite einzufügen. PHP bietet dafür das Kommando echo an, das Text nicht auf den Bildschirm, sondern an den Browser schickt. So kann HTML-Code erzeugt werden, der dann vom Browser verarbeitet wird.
|
Ein wichtiger Punkt, der am Anfang sicher immer wieder für Parser-Fehler sorgen wird, ist, daß in einem auszugebenen String natürlich keine Anführungszeichen (") verwendet werden dürfen. Sollen sie trotzdem verwendet werden, muß ihnen ein Backslash (\) vorangestellt werden.
Es ist übrigens kein guter Stil, zeilenweise statischen HTML-Code mit der echo-Funktion auszugeben. Wie es besser geht, seht Ihr z.B. bei den Funktionen.
Innerhalb eines auszugebenden Textes können Variablen verwendet werden, die dann von PHP mit den aktuellen Werten ersetzt werden.
|
Ein Problem, das bei der Erzeugung von HTML-Code aus PHP heraus auftritt, ist die schlechte Lesbarkeit des erzeugten Codes, da PHP von sich aus keine Zeilenumbrüche einfügt. Will man im Code solch einen Umbruch haben, muß er explizit durch \n erzeugt werden.
|
|
Wie in anderen Programmiersprachen gibt es auch in PHP Möglichkeiten, die Ausführung von Code von bestimmten Bedingungen abhängig zu machen.
IF
|
Der ELSE-Zweig kann wieder mit einer IF-Abfrage verknüpft sein:
|
Folgende Vergleichsoperatoren sind in PHP definiert:
| == | gleich |
| < | kleiner |
| > | größer |
| <=,>= | kleiner gleich, größer gleich |
| <>,!= | ungleich |
SWITCH
Die SWITCH-Anweisung ist prinzipiell eine Vereinfachung von vielen IF..ELSEIF..ELSEIF..ELSE Anweisungen hintereinander. Der Inhalt einer Variablen/eines Wertes wird gegen mehrere verschiedene Möglichkeiten auf Gleichheit überprüft. Außerdem ist ein DEFAULT-Fall möglich.
Die Syntax ist der von C sehr ähnlich: sobald eine Übereinstimmung gefunden wurde, werden alle folgenden Anweisungen bis zum Ende des SWITCH-Blocks ausgeführt. Verhindern kann man dies, indem man eine break-Anweisung einfügt, die zum Ende des Blocks springt.
|
|
Um Anweisungen mehrfach auszuführen, werden Schleifen verwendet. PHP bietet dazu drei verschiedene Varianten, die alle ähnlich sind, jedoch für verschiedene Anweisungszwecke mehr oder weniger geeignet sind.
WHILE
|
Die Anweisungen in der Schleife werden solange ausgeführt, wie die Bedingung zu Beginn eines Schleifendurchlaufs erfüllt ist. Ist dies nicht der Fall, werden alle Anweisungen in der Schleife übersprungen und die Ausführung wird hinter der Schleife fortgesetzt.
DO ... WHILE
|
Im Unterschied zur WHILE-Schleife wird hier erst nach dem Schleifendurchlauf die Bedingung geprüft, was zu dem Effekt führt, daß die Anweisungen in der Schleife in jedem Fall mindestens einmal ausgeführt werden.
FOR
|
Vor dem Einstieg in die Schleife wird die erste Anweisung in der Klammer ausgeführt (hier: $i=0), dann läuft die Schleife solange wie die Bedingung in der Mitte (hier: $i<10) erfüllt ist. Nach jedem Schleifendurchlauf wird die dritte Anweisung (hier: $i++) ausgeführt.
Aus der Beschreibung wird deutlich, daß sich eine FOR-Schleife sehr leicht durch eine WHILE-Schleife realisieren läßt, sie ist jedoch häufig eleganter zu benutzen.
|
Neben einfachen Variablen gibt es in PHP auch Arrays. Der Index des Arrays wird in eckigen Klammern hinter die Bezeichnung der Arrayvariablen angehängt. Im Vergleich zu C sind PHP-Arrays assoziativ, d.h. sie haben keine fortlaufende Nummerierung der Elemente, sondern es können beliebige Schlüssel verwendet werden.
Da PHP untypisiert ist, kann auch der Typ der in einem Array gespeicherten Werte beliebig sein.
|
|
PHP bietet eine Reihe von Funktionen, die man als Programmierer nutzen kann. Ein Funktionsaufruf besteht aus dem Funktionsnamen gefolgt von einer Argumentsliste in Klammern.
|
Eine Beschreibung aller Funktionen ist in der Dokumentation zu PHP zu finden.
|
PHP bietet natürlich auch die Möglichkeit eigene Funktionen zu definieren.
Das entsprechende Schlüsselwort dafür heißt ,,function''.
Funktionen können Berechnungen ausführen, Ausgaben erzeugen und vieles anderes mehr.
Es folgt ein Beispiel, dass beides macht.
|
Funktionen können selbstverständlich auch Werte zurückliefern. Dies wird mit dem Schlüsselwort return gemacht. Trifft der Interpreter innerhalb einer Funktion z.B. auf die Zeile "return 42;", so wird die Funktion beendet und der Wert 42 zurückgegeben. Da die Funktionen ebenso wie die Variablen nicht typisiert sind, kann eine Funktion je nach Definition gar nichts oder Werte von verschiedenen Typen zurückgeben. Ein Beispiel:
|
"Harald" übergeben, liefert die Funktion keinen Wert zurück.
|
Bei der Gestaltung von Websites werden am Beginn und am Ende einer Seite häufig gleiche Elemente wiederverwendet, z.B. ein Seitenkopf/-fuß oder ein Auswahlmenü. Prinzipiell kann man dies auf jeder einzelnen Seite neu schreiben, einfacher ist es jedoch, diese Teile in gesonderten Dateien vorzuhalten und bei Zugriffen auf Seiten diesen Code dann einzubinden. Dadurch wird vor allem auch die Wartbarkeit von ganzen Websites wesentlich vereinfacht, da dann nicht mehr jede Seite einzeln geändert werden braucht, sondern Änderungen lediglich zentral in einer einzigen Datei vorgenommen werden können.
PHP stellt dazu die Funktion require zur Verfügung, die andere Dateien einbindet. Als Argument wird ein String mit dem Namen der Datei angegeben, die eingebunden werden soll. Zu beachten ist dabei, daß keine URL angegeben wird, sondern der echte Pfad im Dateisystem des Webservers. Es ist ratsam, hier relative Pfade zu verwenden, da ansonsten eine Umstrukturierung des Dateisystems auf dem Server fast alle Seiten unbrauchbar machen würde.
Wenn wir beispielsweise die Datei kopfundfuss.php folgendermassen definiert haben:
|
dann können wir die dort definierten Funktionen folgendermassen nutzen:
|
Der Inhalt der Datei wird als HTML-Code eingebunden, d.h. also, dass PHP-Befehle in der eingebundenen Datei in PHP-Tags eingeschlossen werden müssen.
|
Die Auswertung von FORMS ist mit PHP relativ einfach. PHP stellt zwei Arrays zur Verfügung, die alle durch ein Formular übertragenen Variablen enthalten. In $_GET sind alle durch ein GET-Form übertragenen Variablen enthalten und in $_POST all diejenigen, die durch POST-Forms übertragen wurden. Um einzelne Variablen gezielt aus dem Array auszulesen, kann der Variablenname als Index des Array angegeben werden.
Gibt es zum Beispiel in einem POST-FORM ein INPUT-Feld mit dem Namen textfeld, so steht in $_POST['textfeld'] der Wert, der zum Textfeld gehört.
Hier ein Beispiel:
|
Autoren: Marco Kaiser, Harald Weinreich, Volkert Juergens, Christian Kunze
|
||||||