Einfaches PHP 1

Nachdem wir im Beitrag PHP gesehen haben was PHP ist und wie es konfiguriert wird, schauen wir uns als Erstes mal ein einfaches HTML-Beispiel an:

http://html.nobs-nobody.de/home.html

HTML-Code

Den HTML-Quelltext erreicht Ihr über Rechtsklick->Quelltext anzeigen. Der Rest ist schnell erklärt.
Ein Layer (<div id=“frame“>) als Rahmen kapselt einen Header (<header id=“north“>), eine Navigation (<nav id=“west“>) und den eigentlichen Inhalt (<section id=“center“>), die für die Darstellung der entspechenden Inhalte verwendet werden.
Die Details dazu findet Ihr auf der HTML-Seite.

Einsatz von PHP

Und hier entsteht das Problem, bei dem PHP mit seiner Dynamik helfen soll.
Will man auf diese Weise mehrere Seiten bereitstellen (also z. B. Home, Galerie, Statistiken, Datenschutz, Impressum, Kontakt usw.), schreibt man für jede Unterseite eine neue HTML-Datei (home.html, galerie.html, statistik.html, datenschutz.html, impressum.html, kontakt.html usw.) mit gleichem Code für Header und Navigation und hat damit sehr viel Arbeit. Will man dann auch noch etwas ändern, muss man das in allen HTML-Dateien.
Um diese aufwendige und fehleranfällige Arbeit zu umgehen, kann man PHP nutzen, in dem man abhängig von der Client-Anfrage über PHP immer einen anderen Content (Inhalt) lädt:

Client – Requests

Es gibt eine Menge an verschiedenen Anfragetypen die ein Browser versenden kann. Eine kleine Erläuterung dazu findet Ihr unter: HTTP bzw. HTTP-Request-Methoden.
Der Request, der uns interessiert, heißt GET-Request und die Daten für diese Anfrage werden als sogenannter Query-String (eingeleitet mit einem Fragezeichen) an die Webadresse angehängt, wobei immer Schlüssel-Werte-Paare (mit einem Gleichheitszeichen verknüpft) verwendet werden, also z. B.:

http://php.nobs-nobody.de/simple/?page=home

Ihr könnt auch mehrere Schlüssel-Werte-Paare mit dem &-Zeichen verknüpfen – siehe HTTP.
Man könnte sagen, der Browser stellt dem Webserver eine Frage: „Hast du eine Webseite, bei der der Wert von ‚page‘ ‚home‘ ist?“
Und genau das wollen wir uns zu Nutze machen, weil wir all unsere Links so aufbauen und im PHP auf Serverseite dann darauf reagieren, welche Frage uns die Browser stellen.

PHP-Dateien

Wir erstellen uns mit einem einfachen Text-Editor (z. B. Notepad++) eine Datei ‚index.php‘ und legen sie in das Verzeichnis unsere Webseite. Der Code der Datei umfasst dabei lediglich drei effektive Zeilen:

<?php
// client request klonen
$request = $_REQUEST;
// standard wert für page setzen, wenn im client request keiner gesetzt ist
if (empty($request["page"])) {
    $request["page"] = "home";
}
// html code einbinden
require("tpl/index.tpl.php");
?>

Wir erkennen gleich mehrere Dinge an diesen einfachen Code-Zeilen:

  • PHP-Anweisungen stehen grundsätzlich immer innerhalb des Tags <?php … ?> und werden mit einem Semikolon abgeschlossen
  • Anweisungsblöcke – wie der nach der IF-Bedingung – werden in geschweiften Klammern zusammengefasst – siehe Kontrollstrukturen
  • Kommentare – alles hinter // oder zwischen /* … */ – werden vom PHP-Interpreter ignoriert
  • Variablen werden durch das $-Zeichen kenntlich gemacht – die Variable der ersten Zeile heiß ‚request‘ (nicht Dollar-Request, das Dollar-Zeichen existiert nur für die Anzeige, das dies eine Variable ist) – siehe Variablen und Konstanten
  • man kann Variablen mit dem Operator ‚ = ‚ jeden Wert zuweisen bzw. darin speichern – siehe Operatoren
  • um zu überprüfen, ob eine Variable nicht existiert, leer ist oder Werte wie ’null‘, ‚0‘ oder eine leere Zeichenkette gespeichert hat, verwendet man Funktionen wie isset() (existiert nicht) oder empty() (sie ist leer oder hat etwas leeres gespeichert) – siehe Variablenfunktionen
  • Prozeduren (PHP ist eine prozedurale Sprache) – oder auch Methoden oder Funktionen – werden immer mit Klammern aufgerufen, das was in den Klammern steht nennt man Parameter oder auch Signatur der Methode oder Funktion – siehe Funktionen
  • mit Funktionen wie require() (oder auch require_once(), include() oder include_once()) kann man zusätzliche Dateien einbinden, und sie werden so eingebunden, als hätte man den in ihnen enthaltenen Code hier geschrieben – siehe Einbindung externer Skripts
  • dadurch können Variablen in den eingebundenen Dateien weiter verwendet werden (z. B. $request in der Datei ‚tpl/index,tpl.php‘), als wären sie dort erstellt worden

Warum nun aber diese drei Anweisungen?

Der Client-Request – siehe HTTP (in der vom Webserver bereit gestellten, geschützten PHP-Variable $_REQUEST gespeichert) ist nur lesbar – siehe Servervariablen.
Gibt der Benutzer die Adresse ‚http://php.nobs-nobody.de/simple/‘ in die Adressleiste seines Browsers ein, soll die Startseite (home) angezeigt werden, das heißt aber, wir müssen einen Standardwert für page setzen, wenn der Client keinen Wert dafür angegeben hat, sonst meldet der Webserver ‚404 – Not found‘, weil er nicht weiß, welche Datei er als Antwort senden soll.
Dazu brauchen wir aber eine schreibbare Kopie des Client-Requests, die uns durch die erste Zeile in der Variable $request erstellt wird.
Die zweite Zeile setzt den Standardwert für ‚page‘ auf ‚home‘, aber nur dann, wenn nicht bereits ein Wert für page existiert.
Und in der dritten Zeile wird eine PHP-Datei (ein so genqanntes Template – hier das Haupt- oder Main-Template für den immer gleichen HTML-Code) eingebunden.
Das Main-Template spielt dabei eine wichtige Rolle, wie wir weiter unten sehen werden.

Wir erstellen uns erst einmal einen Ordner ‚tpl‘ im Verzweichnis unserer Webseite und legen eine Datei ‚index.tpl.php‘ – oder welchen Namen Ihr auch immer vorzieht, wichtig ist nur die Endung ‚.php‘ – an.
Dort hinein legen wir den gesamten HTML-Code mit Ausnahme des eigentlichen Inhalts. Dieser wird in die Dateien home.html, impressum.html und kontakt.html geschrieben, die wir ebenfalls im Ordner ‚tpl‘ ablegen.
All diese Dateien könnt Ihr euch hier herunterladen und anschauen.

Ihr werdet feststellen, dass die heruntergeladenen Dateien ein klein wenig von den Originaldateien abweichen, da hier die Verweise „gesäubert“ wurden. Das ganze funktioniert mit dem Webserver-Modul Rewrite und macht die Seite im Internet besser auffindbar.
Wie man so etwas macht steht auf der mod rewrite-Seite.
Für unsere Seite ändert damit die .htaccess-Datei auf dem Webserver URI’s, wie z. B.:

http://php.nobs-nobody.de/simple/home/

in

http://php.nobs-nobody.de/simple/?page=home

Und das aus vor Allem zwei Gründen:
Erstens kann Google und Co. mit   ‚http://php.nobs-nobody.de/simple/home/‘   besser umgehen und zweitens kann man sich das besser merken.
Damit können wir alle Verweise in der Form
http://<host>/<ordner>/<page>/
notieren, aber mit den GET-Parametern arbeiten, als hätte der Client
http://<host>/<ordner>/?page=<page>
angefordert.
Wichtig bleibt, dass die Dateien genau so heißen, wie wir sie in den Zeilen 44 bis 46 der Datei ‚index.tpl.php‘ aufrufen, also genau so, wie die verschiedenen Werte von ‚page‘,
egal ob nun so, wie in den Originaldateien, oder so:

41|      <li><a href="http://php.nobs-nobody.de/simple/?page=home" ...
42|      <li><a href="http://php.nobs-nobody.de/simple/?page=impressum" ...
43|      <li><a href="http://php.nobs-nobody.de/simple/?page=kontakt" ...

Damit sind auch die PHP-Anweisungen in der Datei ‚index.tpl.php‘ schnell erklärt.
Der Wert von ‚page‘ wird in Zeile 132 mit der Funktion print() als Überschrift ausgegeben. Allerding wird dieser Wert voher noch so gändert, dass er einen großen Anfangs- und kleine weitere Buchstaben besitzt. Erreicht wird das mit der Funktion ucfirst(). Zwei Funktionen, die also „ineinander geschachtelt“ sind, werden nacheiander (von innen nach außen) ausgeführt, erst ucfirst() dann print().

132|      <?php print(ucfirst($request["page"])); ?>

In Zeile 136 wird eine Datei eingebunden, die genauso heißt, wie der Wert von Page und die Endung ‚.html‘ hat.

136|      <?php require("tpl/".$request["page"].".html"); ?>

Wir reagieren damit also genau auf den Request des Clients, der auf einen der Links in Zeile
44 – 46 klickt. Auf diese Art braucht man den HTML-Quellcode für Header, Navigation und „Inhalts-Rahmen“ nur einmal schreiben – in der index.tpl.php – und lädt je nach Anforderung des Clients unterschiedliche Inhalte, aus den HTML-(Template-)Dateien
home.html, impressum.html, kontakt.html usw.

Passt Endung und Dateinamen (und damit page-Werte) einfach an Eure Bedürfnisse an.

Auf jeden Fall habt Ihr damit Eure erste dynamische Webseite mittels PHP. Sie ist nicht perfekt, aber sie funktioniert.
Wie man unsere Beispielseite jetzt für das Internet noch optimieren kann, erfahrt Ihr unter anderem auf der SEO-Seite oder auch hier.

Weiter im PHP geht es hier: Einfaches PHP 2.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.