Der Front-Controller

Es ist nützlich, ein neues Verzeichnis innerhalb des Dateibaumes unseres Webservers anzulegen, in welchem die Applikation entwickelt werden wird. In diesem Verzeichnis wird der Front-Controller in der Datei index.php hinterlegt. Der Front-Controller soll zunächst sicherstellen, dass sich der Benutzer authentifizieren muss, um mit der Adressdatenbank arbeiten zu können. Die Benutzernamen/Passwort-Kombinationen stehen dabei in der Datenbank. Die Passwörter sind gemäß des PHP-Passwort-Hashings, welches in dem Abschnitt Passwort-Hashing vorgestellt wurde, gehasht:

Zunächst wird mit mit dem Tool phpMyAdmin eine neue Datenbank für das Projekt mit dem Namen cruddb angelegt. In dieser Datenbank wird eine neue Tabelle mit dem Namen users erzeugt:

Mit Hilfe des folgenden Statements kann nun ein neuer Nutzer zu dem System hinzugefügt werden:

Für den Wert gehashtes Passwort muss ein gehashtes Passwort hinterlegt werden. Dies geschieht mit der Funktion password_hash() aus dem Abschnitt Passwort-Hashing.

Die Prüfung der Benutzernamen/Passwortkombination in der index.php sieht nun wie folgt aus:

Innerhalb der benötigten config.php befinden sich die nötigen Datenbankparameter. Diese werden ausgelagert, so dass das Programm nur durch ein Editieren dieser Datei an eine neue Umgebung angepasst werden kann:

Schon an dieser Stelle ist eine zweite Datei für das zu entwickelnde Programm mit hinzugekommen. Es muss sichergestellt werden, dass diese Datei nicht eigenständig aufgerufen wird, so dass sich keine eventuellen Sicherheitslücken auftun. Alle Anfragen müssen über den Front-Controller geleitet werden. Dies kann sichergestellt werden, indem der Webserver angewiesen wird, die config.php nicht separat auszuliefern. Einfacher ist es jedoch, vor jeder PHP-Datei, die nicht aufgerufen werden kann, einen Guard zu schalten. Dafür wird ganz zu Beginn der index.php folgende Zeile eingefügt:

Und jede Datei, die nicht separat aufgerufen werden darf, erhält als erste Zeile folgende Anweisung:

Schreibe einen Kommentar

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