PHP praxisorientiert lernen: Wie PHP funktioniert
Aus Wikibooks
- Dieses Kapitel widmet sich der Frage, wie eine Anfrage auf eine PHP-Seite vom Server verarbeitet und beantwortet wird.
Außerdem werden hier Grundlagen zu Client und Server und zu HTTP vermittelt.
Inhaltsverzeichnis |
[Bearbeiten] Client und Server
Unter Webserver wird die Software, sowie der Computer auf dem diese läuft verstanden, welche Informationen über das Inter- bzw. Intranet für den Clienten zur Verfügung stellt. Der Client (engl. Kunde) ist derjenige, der Informationen vom Server anfordert. Als Sie diese Webseite aufgerufen haben, waren Sie zum Beispiel der Client, welcher die Informationen (diese Webseite) angefordert hat, und der Server war ein (von Wikimedia gekaufter/gemieteter) Computer mit Internetzugang. Client und Server müssen aber nicht einmal zwingend zwei verschiedene Computer sein, denn auf einem Computer kann sowohl ein Server (z.B. Apache) laufen als auch ein Client (z.B. Firefox).
Für Testzwecke ist so ein lokaler Server - also eine Server-Software auf ihrem Computer - sehr nützlich, da man seine Programme direkt auf dem eigenen PC ausprobieren kann. Für dieses Buch sollten sie sich einen lokalen Server installieren um die gezeigten Beispiele auch benutzen zu können. Mehr über die Installation eines Webservers auf ihrem Rechner im nächsten Kapitel.
- Einen Server aufsetzen
- Bezeichnet das Installieren einer Serversoftware auf dem Computer.
- Clientseitig
- Etwas, was nur den Clienten betrifft. Javascript ist z.B. eine clientseitige Programmiersprache, da die Javascript Befehle vom Browser und nicht vom Server interpretiert werden.
- Serverseitig
- Das Gegenteil von Clientseitig, also etwas was den Server betrifft. PHP ist eine serverseitige Programmiersprache, da PHP vom Server intepretiert wird.
[Bearbeiten] HTTP
Haben Sie sich schon einmal gewundert, wieso vor allen Internetadressen "http://" steht? Dieser Präfix steht für das Protokoll, das Format, in dem die Informationen zurückgeliefert werden sollen. Das bekannteste Protokoll neben http ist ftp - ein Protokoll, welches dazu genutzt wird Dateien zu übertragen (mehr dazu in den nächsten beiden Kapiteln).
HTTP steht für Hypertext Transfer Protocol und ist ein Protokoll, welches dazu dient die Anfrage vom Clienten nach einer Seite und die Antwort des Servers an den Clienten einheitlich zu regeln. Mehr zum Thema HTTP und der genaue Aufbau eines Aufrufes finden Sie im Bereich Kommunikation, da alle Kommunikation von dem Clienten zum Server über HTTP statt findet.
[Bearbeiten] Vom Anfordern der Webseite bis zur Antwort vom Server - Der Server-Alltag
- Der Client fordert übers Internet die PHP Datei beispiel.php an.
- Nachdem die Anfrage durchs Internet zum Server geleitet wurde, lädt die Webserver-Software nun die Datei beispiel.php von der Festplatte.
- Der Webserver analysiert nun, was für eine Dateiendung die geladene Datei besitzt. Da die Dateiendung .php ist, wird die Datei an den PHP-Interpreter (mehr dazu s.u.) übergeben. Anm.: Normale HTML-Dateien, Bilder und PDF Dokumente würden einfach alle weiteren Schritte bis zu Nr. 6 überspringen.
- Der PHP-Interpreter interpretiert den Quelltext der geladenen Datei und erzeugt je nach Script eine entsprechende Datei mit einem bestimmten Format - meist HTML, allerdings können von PHP auch andere Dateien wie Grafiken oder PDF-Dateien generiert werden.
- Der erzeuge Code (z.B. HTML-Code) wird nun vom PHP-Interpreter an die Webserversoftware zurückgegeben.
- Nun sendet der Webserver eine Antwort mit dem entsprechenden Quellcode der Seite an den Browser des Benutzers zurück. Dieser Code wird dann vom Browser clientseitig analysiert und entsprechend verarbeitet.
[Bearbeiten] Häufige Missverständnisse über client- und serverseitigen Arbeiten
Im Internet gibt es - jedenfalls unter Anfängern - schon seit etlichen Jahren Missverständnisse wie PHP funktioniert. Die Meisten davon resultieren daraus, dass die entsprechende Person den Unterschied zwischen client- und serverseitigen Arbeiten (Erklärung s.o.) nicht richtig verstanden hat.
[Bearbeiten] PHP-Quellcode kann von jedem gelesen werden
Das ist falsch. PHP arbeitet nur serverseitig. Der PHP-Interpreter liest den Code ein und gibt an den Webserver nur die Ausgaben zurück welche in PHP gemacht wurden, der PHP-Code selbst wird normalerweise nicht übergeben. Der Browser erhält also immer nur die Ausgaben des interpretierten PHP-Codes - meist ist dies HTML-Code, die Ausgaben können natürlich aber auch das Struktur eines anderen Dateiformates haben (wie dies geht, dazu aber erst in späteren Kapiteln).
Wenn ein Benutzer also den Quellcode im Browser anschaut, dann sieht er den vom PHP-Interpreter generierten HTML-Code.
Ausnahme: Server bei denen kein PHP installiert ist (dies muss man nämlich extra tun) geben den Inhalt von .php Dateien einfach zurück ohne diesen zu interpretieren. Auch wenn die Dateien mit PHP Code die falsche Endung haben bleiben sie vom PHP Interpreter unangetastet. Die führt dann dazu dass der Quelltext im Browser sichtbar wird, denn diese können mit PHP Code nichts anfangen und zeigen ihn als reinen Text an.
[Bearbeiten] Javascript und PHP
Oft unklar ist auch der Unterschied zwischen Javascript und PHP. Da beide Scriptsprachen sind, nehmen viele Menschen an, dass diese praktisch "Hand in Hand" arbeiten müssten. Es gibt jedoch entscheidene Unterschiede in den beiden Sprachen, die die Zusammenarbeit erschweren.
Der wohl größte Unterschied ist das PHP eine serverseitige und Javascript eine clientseitige Anwendung ist. PHP ist beispielsweise nicht in der Lage eine bereits ausgegebene Seite zu verändern, während man mit Javascript dynamisch Elemente verändern kann. Umgekehrt ist Javascript z.B. nicht in der Lage direkt Daten aus einer Datenbank nachzuladen, dies ist nur über PHP möglich.
Durch neue Techniken, oder vielmehr der Kombination mehrerer älterer Techniken, ist es mittlerweile aber möglich Daten ohne neues Laden der Seite hinzuzufügen. Diese als AJAX bekannte Methode vermittelt den Eindruck man könnte Daten einfach zwischen den beiden Sprachen hin und her tauschen. Dies ist jedoch nicht immer direkt möglich, denn auch die Sytax der beiden Sprachen ist recht unterschiedlich. So ist der Programmieraufwand mit AJAX meist höher als mit statischen Seiten. Es müssen besondere Vorkehrungen getroffen werden um den reibungslosen Datenaustausch zu geährleisten.
In diesem Buch wird nicht näher auf AJAX im allgemeinen und Javascript im speziellen nicht weiter eingegangen, wenn dies nicht zu einem speziellen Beispiel gebraucht wird. Da es sich bei Javascript um eine eigene Sprache handelt würde dies nur den Rahmen dieses Buches sprengen.
[Bearbeiten] Der PHP-Interpreter
PHP ist eine Interpretersprache. Das bedeutet, dass der PHP-Quellcode bei jedem Seitenaufruf eingelesen, analysiert und ausgeführt wird. Der PHP-Interpreter ist also praktisch das Herz von PHP, ohne ihn würde beim Seitenaufruf einfach der PHP-Code an den Browser zurückgegeben.
Wenn Sie noch nie mit einer anderen Script- oder Programmiersprache gearbeitet haben, werden Sie sich wahrscheinlich fragen: "Na und?". Aber die Interpretersprachen stellen eher die Ausnahme als die Regel bei Script- und Programmiersprachen dar, bei vielen Programmiersprachen werden die Quellcodes compiliert, das bedeutet, dass der Quellcode einmal analysiert und in Maschinencode umgewandelt wird.
Der Benutzer, bzw. Server würde dann bei dem Seitenaufruf nur noch den fertigen Maschinencode abrufen ohne den eigentlichen Quellcode - wie beim Interpretieren - einzulesen und zu analysieren.

