PHP praxisorientiert lernen: Wie PHP funktioniert


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.

Client und Server Bearbeiten

Als Webserver versteht man die Einheit, die Informationen über das Inter- bzw. Intranet für den Clienten zur Verfügung stellt. Hiermit kann sowohl die Software als auch der gesammte Computer gemeint sein.

Als Client (engl. Kunde) bezeichnet man die Einheit, die Informationen vom Server anfordert.

Als Sie diese Webseite aufgerufen haben, war Ihr Webbrowser zum Beispiel der Client, der die Informationen (diese Webseite) angefordert hat. Der Server war ein (von Wikimedia gekaufter/gemieteter) Computer mit Internetzugang. Client und Server müssen nicht 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.

Vokabular für den Programmier-Alltag:
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.

HTTP Bearbeiten

Haben Sie sich schon einmal gewundert, wieso vor allen Internetadressen "http://" steht? Dieses Präfix steht für das Protokoll, das Format, in dem die Informationen zurückgeliefert werden sollen. Ein weiteres sehr bekanntes Protokoll neben http ist ftp - ein Protokoll, welches ebenfalls 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.

Vom Anfordern der Webseite bis zur Antwort vom Server - Der Server-Alltag Bearbeiten

 
  1. Der Client fordert übers Internet die PHP Datei beispiel.php an.
  2. Nachdem die Anfrage durchs Internet zum Server geleitet wurde, lädt die Webserver-Software nun die Datei beispiel.php von der Festplatte.
  3. 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.
  4. 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.
  5. Der erzeugte Code (z.B. HTML-Code) wird nun vom PHP-Interpreter an die Webserversoftware zurückgegeben.
  6. 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.

Häufige Missverständnisse über client- und serverseitigen Arbeiten Bearbeiten

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.

PHP-Quellcode kann von jedem gelesen werden Bearbeiten

Das ist falsch. PHP arbeitet nur serverseitig. Der PHP-Interpreter liest den Code ein und gibt an den Webserver nur die Ausgaben zurück, die 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 die 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. Dies 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.

Javascript und PHP Bearbeiten

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, dass 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 Syntax 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 gewährleisten.

In diesem Buch wird nicht näher auf AJAX im allgemeinen und Javascript im speziellen 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.

Durch den Einsatz moderner Frameworks (Bibliotheken) wie Zend Framework, Symfony oder CakePHP wird die Integration von JavaScript deutlich einfacher, da diese Rahmenwerke schon von hause aus die gängigsten JavaScript Frameworks wie jQuery, Scriptaculous oder MooTools mitbringen. In Funktionen die dem Entwickler Global zu Verfügung stehen wird es möglich schnell und einfach JavaScript einzubinden ohne diese Sprache in ihrer Gesamtheit zu kennen.

Der PHP-Interpreter Bearbeiten

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.