Schnellkurs - PHP in Webseiten benutzen
Hinweis: Der Autor des Artikels ist kein ausgebildeter Fachmann zum Thema. Alle hier getroffenen Aussagen sind nach bestem Wissen sowie gegebenenfalls nach persönlicher Einschätzung des Autors getroffen. Dabei ist es leider nicht auszuschließen, dass einige Angaben veraltet, irreführend oder sonstwie fehlerhaft sind. Letztendlich liegt es in der Verantwortung jedes einzelnen Lesers, die hier gemachten Angaben zu überprüfen und gegebenenfalls weitere Informationen einzuholen. Der Autor kann und will darum keine Garantie oder Haftung für Probleme oder Verluste, die trotz oder wegen der Befolgung der hier genannten Ratschläge eintreten, übernehmen. Jeder Leser hat natürlich die Möglichkeit, die folgenden Ratschläge nicht zu befolgen oder sie gar nicht erst zu lesen.
Wie kann ich PHP in meine Webseiten einbauen?
Webseiten werden üblicherweise im HTML-Format erstellt. Mit diesem kann man Inhalte so festlegen und formatieren, dass sie vom Webbrowser des Besuchers richtig dargestellt werden. Jedoch ist HTML nicht in der Lage, auf Nutzereingaben oder sonstige Ereignisse dynamisch zu reagieren. Mit der Scriptsprache PHP, deren Befehle man in den HTML-Text einbauen kann, läßt sich diese fehlende Dynamik durch die Mittel einer Programmiersprache ergänzen. Dieser Kurs soll einen schnellen Einstieg zu PHP vermitteln. Dabei geht es darum, die ersten Schritte erfolgreich und möglichst schnell zu absolvieren. Wenn man diese erstmal beherrscht, wird man weiteres "Expertenwissen" mit der Zeit nach und nach selber durch Praxis dazulernen. Zudem gibt es viele Situationen, in denen man keine komplette Webseite neugestalten will, sondern nur ein paar kleine interaktive Elemente in die eigene Webseite einbauen möchte. Insbesondere auch bei diesen Fällen soll dieser Schnellkurs helfen und PHP ist gerade für Einsteiger eine sehr einfache Programmiersprache, die schnell zu erlernen ist.
Inhaltsverzeichnis
Wozu braucht meine Webseite überhaupt PHP?
PHP ergänzt fehlende Funktionalität, die mit HTML allein nicht realisierbar ist. Dazu gehört, das Verarbeiten von Eingaben über Bedienelemente wie Buttons oder Textfelder. Dazu gehört der Zugriff auf Datenbanken oder das Lesen und Schreiben von Textdateien. Dazu gehört generell das Verarbeiten von Informationen wie etwa Uhrzeit und Datum, die Verwendung von Zufallszahlen, das Auslesen externer Webseiten und vieles mehr. Mit PHP kann man Aussehen und Inhalt der Webseite bei ihrem Aufbau beeinflussen oder gar komplett gestalten. Neben PHP gibt es weitere Sprachen wie zum Beispiel PERL, die im Wesentlichen genau das gleiche leisten wie PHP. Für PHP spricht allerdings, dass es sehr weit verbreitet ist und vermutlich in den meisten dynamischen Webseiten verwendet wird.
Hinweis
Wie HTML-Webseiten ist eine Webseite, die PHP benutzt, nach dem Aufbau allerdings statisch und kann ihr Aussehen erst beim Neuaufruf der Seite wieder ändern. Wer dynamische Veränderungen ohne Neuladen erzielen will, wie sie etwa die graphischen Nutzeroberflächen vieler Web 2.0-Webseiten bieten, benötigt dazu die Scriptsprache Javascript. Da diese wiederum bestimmte PHP-Funktionen wie etwa Datenbankzugriffe nicht leisten kann, verwenden solche Angebote oft gleichzeitig HTML, PHP und Javascript. Vereinfacht gesagt: Javascript macht das "Klicki-Bunti", also die hübschen optischen Effekte.
Einen PHP-Server aufsetzen
Um PHP nutzen zu können, muss die Webseite einen PHP-Server besitzen, der die PHP-Befehle beim Aufruf einer Webseite interpretiert und die Webseite dann korrekt wieder gibt. In den allermeisten Fällen, soll eine Webseite im Internet verfügbar sein. Bei fast allen Webhostern, bei denen man seine Webseite betreiben kann, gehört PHP zur Grundausstattung ihrer Angebote, so dass PHP-Code dort in den meisten Fällen automatisch funktioniert, ohne dass man etwas einstellen muss.
Wenn man einen Webserver selbst betreibt, dann muss man selber dafür sorgen, dass der PHP-Server auf dem Server-Computer installiert wird. Als PHP-Entwickler (auch als Anfänger) ist es zudem sehr sinnvoll einen eigenen Server-Computer zu betreiben (dafür kann man seinen Computer benutzen und muss nicht extra einen anderen kaufen). Der Vorteil ist, dass man beim Entwickeln auf seinem eigenen Computer arbeiten und testen kann, bevor man die fertige Seite beim Webhoster hochlädt. Ohne eigenen Webserver muss man jeden Zwischenschritt erst einmal beim Webhoster hochladen und kann ihn dann erst testen. Das Installieren eines privaten Webservers geht üblicherweise mit wenigen Handgriffen und wird in diesem Artikel beschrieben.
Hinweis
Bei der Installation des Webservers wird ein Ordner festgelegt, in dem die Webdateien liegen müssen, damit sie ausgeführt werden. Wenn man einen Webserver bei einem Webhoster gemietet hat, erklärt dieser, welcher Ordner das ist und wie man Dateien dorthin hochlädt. Der Webserver guckt nur in diesem Ordner (oder in Unterordnern dieses Ordners) nach angefragten Dateien. Dies hat den Vorteil, dass bei Dateien mit gleichem Namen immer klar ist, welche Datei gemeint ist und dass der Webserver nicht alle Ordner auf dem Computer durchsuchen muss, um eine Datei zu finden. Bei einer XAMPP-Installation (siehe Link voriger Absatz) ist dieser Ordner <Installationspfad/xampp/htdocs/". Die Dateien in diesem Ordner ruft man dann auf durch http://localhost/dateiname.html oder http://localhost/unterordnername/nocheinunterordnername/dateiname.html, falls der Basisordner Unterordner enthält. Die PHP-Dateien werden an der gleichen Stelle abgelegt, wo man auch reine HTML-Dateien ablegen würde.
Erste Schritte
PHP-Befehle werden einfach an beliebiger Stelle in den HTML-Code einer Webseite eingefügt. Damit der Server den PHP-Code erkennt, beginnt ein PHP-Code-Block mit "<?" und endet mit "?>":
<HTML> <BODY> Ich bin HTML<br> <? echo "Ich bin PHP<br>"; ?> Und ich bin wieder HTML </BODY> </HTML>
Wenn man diesen Program-Code in einer Datei namens "index.php" auf dem Webserver abspeichert und dann aufruft, dann erhält man die Ausgabe im unteren Kasten als Ergebnis. Die Endung ".php" weist den Webserver noch einmal explizit darauf hin, dass er mit PHP-Code im Webseiten-Text rechnen muss. Je nach Einstellung des Webservers erkennt er PHP-Code auch automatisch, wenn er in einer Webseite mit der üblichen Endung ".html" enthalten ist:
Ich bin HTML Ich bin PHP Und ich bin wieder HTML
Dieses obige Beispiel sollte man als erstes austesten, um zu sehen, dass PHP richtig auf dem Webserver funktioniert. Wenn man dieses geschafft hat, dann ist man bereits PHP-Programmierer. Im folgenden Kapitel soll es aber nun einen Schritt weiter gehen.
PHP in Action
Beispielanwendung
Das folgende Beispiel erstellt eine dynamisch gestaltete HTML-Webseite mit PHP-Elementen. Sie enthält sehr viele Grundprinzipien, die man bei PHP verwendet und die in diesem Artikel erklärt werden. Die PHP-Teile sind dabei in das HTML Grundgerüst eingebettet. Um das Programm zu testen, muss man den folgenden Programmcode in eine leere Textdatei kopieren und zum Beispiel unter dem Namen "test.php" in dem Webordner des Servers speichern. In dem Beispiel ist eine Grundzahl festgelegt und es wird eine Zufallszahl generiert. Der Nutzer soll die Summe beider Zahlen eingeben. Bei einer korrekten Antwort wird eine neue Zufallszahl für eine neue Aufgabe benutzt, sonst muss der Nutzer die Aufgabe noch einmal lösen:
<? # Werte einlesen $grundzahl = 100; $neuezahl = rand(1,500); $letztezahl = $_REQUEST['letztezahl']; $ergebnis = $_REQUEST['ergebnis']; ?> <html> <body> <? #auswerten if ($ergebnis == '') echo '<b>Bitte unten Ergebnis eingeben:</b><br><br>'; elseif ($ergebnis == $grundzahl + $letztezahl) echo '<font color=green>Bravo: '.$ergebnis.' war das richtige Ergebnis für die Aufgabe "'.$grundzahl.'+'.$letztezahl.'"</font><br>'; else { echo '<font color=red>Schade: '.$ergebnis.' war nicht das richtige Ergebnis für die Aufgabe "'.$grundzahl.'+'.$letztezahl.'"</font><br>'; $differenz = abs($grundzahl+$letztezahl-$ergebnis); echo 'Du liegst um '.$differenz.' neben dem Ergebnis.<br>Bitte versuche es noch einmal.'; $neuezahl = $letztezahl; } ?> <br><br> <form name="eingabe" action="<? $PHP_SELF;?>" method="POST"> <input name="letztezahl" type="hidden" value="<? echo $neuezahl; ?>"/> <? echo $grundzahl.'+'.$neuezahl;?> = <input name="ergebnis" type="text" value=""/> <input name="button" type="submit" value="Los gehts!"/> </form> </body> </html>
Erklärung
PHP-Blöcke einbinden
Wie schon gesagt, beginnen PHP-Blöcke mit den Zeichen "<?" und enden mit "?>". Diese Blöcke werden von HTML komplett ignoriert und an den PHP-Server weitergeleitet. Eine sichtbare Ausgabe erscheint nur, wenn der echo-Befehl verwendet wird, der eine Ausgabe auf der Seite erzeugt. Würde man im obigen Beispiel die echo-Befehle entfernen, würde der PHP-Code dennoch ablaufen, aber keine sichtbare Ausgabe erzeugen. Wie man weiterhin sieht, können PHP-Blöcke an beliebiger Stelle eingebaut werden. Insbesondere auch vor dem <html>-Tag, mit dem die eigentliche HTML-Seite beginnt, oder, wie man im HTML-Teil sieht, mitten in eine HTML-Zeile hinein.
Kommentare
Das Zeichen für Kommentare in PHP ist das "#". Alle Zeilen innerhalb eines PHP-Blocks, die mit "#" beginnen, werden bei der Ausführung komplett ignoriert. Kommentare dienen dazu, Hinweise in den Programmtext einzubauen, die diesen besser erklären. In aufwändigen Programmen können PHP-Programmteile hunderte oder gar tausende von Zeilen haben und es ist in der Praxis sehr wichtig, diese zu kommentieren. Auch, wenn man in dem Moment, wo man ein Programm schreibt, vielleicht noch weiß, was man tut, wird man nach einem Jahr zumeist Probleme haben, sein eigenes Programm zu verstehen (von andereen Programmierern ganz zu schweigen). Man tut sich langfristig einen großen Gefallen, wenn man seinen Text zumindest ein bißchen kommentiert.
Darüber hinaus werden Kommentare beim Entwickeln oft mißbraucht, um Programmzeilen, die man eigentlich noch braucht, testweise "abzuschalten". Um ganze Textblöcke als Kommentar festzulegen, setzt man an den Anfang ein "/*" und ans Ende ein "*/".
Variablen
Variablen sind mit das wichtigste Element einer Programmiersprache. In ihnen können Werte gespeichert werden, um sie zu vergleichen, zu bearbeiten oder später zu benutzen. Anders als andere Programmiersprachen ist PHP sehr großzügig in seiner Variablenbehandlung, da man nicht vorher festlegen muss, ob man etwa Texte oder Zahlen oder andere Dinge speichern will. Eine Variable definiert man einfach durch einen beliebigen Namen vor dem ein "$" steht. Mit dem Gleichheitszeichen speichert man einen Wert in der Variable:
$grundzahl = 100;
PHP-Funktionen
PHP bietet eine große Zahl von Funktionen, die bestimmte Aufgaben automatisch erfüllen. Sie haben einen festen Namen, der von zwei runden Klammern gefolgt ist. Falls die Funktion weitere Informationen braucht, müssen diese zwischen den Klammern stehen. In Verbindung mit Variablen steht eine Funktion zugleich auch selbst für das Ergebnis, dass sie zurückliefert: In der Zeile $neuezahl = rand(1,500); wird die Zufallszahl-Funktion von PHP aufgerufen. Die Parameter sagen der Funktion, dass sie eine Zufallszahl zwischen 1 und 500 erzeugen soll. Durch die Schreibweise $neuezahl = wird das Ergebnis der Funktion sogleich der Variable $neuezahl zugewiesen.
Etwas später im Beispiel wird eine weitere Funktion von PHP verwendet. Der Absolutwert einer Zahl wird durch die Funktion abs() bestimmt: $differenz = abs($grundzahl+$letztezahl-$ergebnis);. Insgesamt stellt PHP hunderte Funktionen zur Verfügung, die hier nicht alle vorgestellt werden sollen. In der Praxis sucht man sich diese Funktionen (zum Beispiel auf der Seite http://www.php.net, sobald man sie benötigt. Neudeutsch könnte man sagen: Funktionen sind die "Apps" von PHP ;-)
Werte übergeben
Einer der wichtigsten Gründe, PHP zu verwenden, ist es Nutzereingaben auszuwerten. Mit HTML <form>-Elementen ist es zwar möglich, Werte an die aufgerufene Webseite (meist ruft die Webseite sich nach der Eingabe selbst erneut auf) zu übergeben, aber HTML kann diese Werte nicht auslesen oder verarbeiten. In den Zeilen
$letztezahl = $_REQUEST['letztezahl']; $ergebnis = $_REQUEST['ergebnis'];
liest PHP die Werte, die im HTML-Formular (über die Eigenschaft name="...") weiter unten definiert wurden aus und speichert sie in Variablen. Diese Werte können nun im Folgenden weiter benutzt und verarbeitet werden.
Wenn-Dann-Bedingungen
Je nach Situation soll ein Programm bestimmte unterschiedliche Dinge tun. In dem Beispiel soll PHP gucken, ob überhaupt ein Ergebnis eingegeben wurde, ob das Ergebis richtig ist oder ob es falsch ist. In jedem dieser Fälle soll etwas komplett anderes passieren. Die Anweisung dazu lautet if(Bedingung):
if ($ergebnis == '')
Die Bedingung lautet in dem Fall $ergebnis == ''. Das erste was man sieht ist, dass Vergleiche mit zwei Gleichheitszeichen "==" gemacht werden. Dies liegt daran, dass das einfache Gleichheitszeichen "=" bereits für Zuweisungen von Werten in Variablen benutzt werden. (Leider führt dies beim Programmieren häufig zu Flüchtigkeitsfehlern, denn die Zeile if ($ergebnis = '') würde tatsächlich dazu führen, dass das einfache "=" als Zuweisung interpretiert würde und $ergebnis mit dem Wert "''" (also leer) überschrieben wird.) Wir haben es jedoch korrekt gemacht und zwei Gleichheitszeichen verwendet. PHP schaut nun, ob die Bedingung $ergebnis == '' in diesem Augenblick WAHR oder FALSCH ist. Nur, wenn die Bedingung WAHR ist wird die folgende Zeile echo '<b>Bitte unten Ergebnis eingeben:</b><br><br>'; ausgeführt. Wenn die Bedingung falsch ist, wird die folgende Zeile übersprungen und bei der nächsten Zeile weiter gemacht.
elseif ($ergebnis == $grundzahl + $letztezahl)
Diese Zeile macht einen weiteren Test (nach dem Motto "sonst wenn"). Auch hier gilt, wenn die Bedingung in den Klammern zu trifft, wird die folgende Zeile ausgeführt, sonst nicht. Man kann beliebige "elseif"-Abfragen hintereinanderhängen, die der Reihe nach abgearbeitet werden. Wenn man für den "Sonst"-Fall keine besonderen bedingungen festlegen will, verwendet man einfach else. Dieses entspricht einer elseif-Anweisung, die immer wahr ist (also etwa elseif (1 == 1). Eine solche Sammlung von if, elseif und else-Anweisung darf beliebig viele Prüfungszeilen beinhalten. Innerhalb so eines Testblocks wird immer die erste zutreffende Anweisung durchgeführt. Sollte es später weitere Anweisungen im gleichen Block geben, die auch zutreffen, werden diese nicht durch geführt. Sollte keine Anweisung zutreffen (das kann passieren, wenn man auf eine else-Anweisung verzichtet), dann wird eben keiner der Fälle ausgeführt.
Wenn nach einer Bedingung nicht nur eine Zeile ausgeführt werden soll, sondern mehrere, dann fasst man diese mehreren Anweisungen in einem Block beginnend mit "{" und endend mit "}" (sogenannte "geschweifte Klammern: auf den meisten Tastaturen "AltGr + 7" und "AltGr + 0") zusammen. Einige weitere Vergleichsoperatoren sind:
- == gleich
- != nicht gleich
- > größer als
- < kleiner als
- >= größer gleich
- <= kleiner gleich
Formatierung der Webseite
PHP kennt zur Ausgabe den echo Befehl und ist ansonsten nur wenig dazu ausgelegt, Ausgaben zu machen. Die Ausgaben von PHP können jedoch HTML-Formate beinhalten. So wird in dem Beispiel eine richtige Antwort in grüner Schrift und eine falsche Antwort in roter Schrift dargestellt. Auf diese Weise ist PHP am Ende doch in der Lage beliebige Formatierungen zu benutzen und es läßt sich problemlos jeder Teil der Webseite durch PHP steuern. Zum Beispiel könnte der obige Teil leicht zu einer Passwort-Abfrage umgestaltet werden. Bei richtiger Antwort würde dann der geheime Inhalt angezeigt werden und bei falscher Antwort würden keine Inhalte, sondern erneut die Passwortabfrage erscheinen.
Und wie geht es jetzt weiter?
Im Prinzip nicht auf dieser Webseite. Dieser Schnellkurs sollte lediglich aufzeigen, wie einfach es ist, PHP in Webseiten einzubauen. Wer diesen Schritt gemacht hat, kann nun selber loslegen, um eigene sinnvolle Anwendungen zu entwickeln. Dabei lernt man Schritt für Schritt neue Funktionen kennen und man braucht nicht lehrbuchartig alle denkbaren Mittel zu erlernen bevor man sie überhaupt benötigt (die weitaus meisten benötigt man in der Praxis sehr selten oder nie). In der Praxis braucht man immer nur einen Teil der vielen Möglichkeiten. Diese findet man aber mit der richtigen Suchtechnik sehr einfach im Internet (etwa "PHP Dateien speichern"). Im Prinzip kann man mit PHP zum Beispiel folgende Dinge tun:
- Webseiteninhalte dynamisch nach logischen Prinzipien gestalten
- Nutzereingaben auslesen und auswerten
- Auf Datenbanken wie MySQL zugreifen
- Dateien lesen und schreiben
- Den Email-Server aufrufen und emails versenden
- Besucherdaten auswerten und Log-Dateien erstellen.
Wer PHP nicht nur aus Spaß an der Freude verwenden will, hat vermutlich schon klare Vorstellungen, was er für eine Funktionalität erreichen will. Nun gilt es, sich selbst hinzusetzen und das zu entwickeln. Die ersten Schritte sollten dabei klein sein und man muss zu Beginn sehr viel im Internet nachschlagen. Aber man wird rasch sehen, dass man immer schneller vorankommt und immer neue Funktionalitäten kennen lernt. Als Anregung und Nachschlagewerk für erste Schritte gibt es hier im Wiki eine Übersicht über die meistbenutzten PHP-Basismittel. Dort lernt man, wie man Schleifen verwendet, Datenbankverbindungen aufbaut oder auf Textdateien zugreifen kann.
Außerdem empfehlen sich für späteres Expertenwissen folgende Webseiten für weitere Schritte:
- http://de.selfhtml.org (HTML, CSS und javascript)
- http://www.php.net (Offizielle PHP Webseite)
- http://www.selfphp.de (PHP)
- http://tut.php-quake.net (Tutorial)
- http://sourceforge.net (Projekt und Script – Repository)
Wieso funktioniert das?
Bei der Anfrage an eine Webseite, liefert der Webserver ein das angefragte Dokument aus, welches dann vom Internetbrowsers des Besuchers korrekt dargestellt wird (siehe auch: http://web-fortbildung.de/internet.php. Durch die Erweiterung um PHP, wird ein zusätzlicher PHP-Server auf Seiten der aufgerufenen Webseite eingerichtet. Der Webserver wird außerdem angewiesen, Dokumente nicht gleich auszuliefern, sondern vorher nach PHP-Programmblöcken zu durchsuchen. Immer, wenn der Webserver einen solchen Block findet, leitet er den Programmblock an den PHP-Server weiter, der ihn dann ausführt. Die PHP-Blöcke verschwinden nach Ausführung aus dem Dokument (und werden ggf. durch die Werte von echo-Anweisungen ersetzt). Erst wenn alle PHP-Blöcke ausgeführt und entfernt oder erstezt wurden, liefert der Webserver das bereinigte Dokumnet an den Fragesteller aus.