PHP/Tutorials/Templates/Alternativen

Aus SELFHTML-Wiki
< PHP‎ | Tutorials‎ | Templates
Wechseln zu: Navigation, Suche

Dateien einbinden[Bearbeiten]

Es gibt grundsätzlich vier verschiedene Möglichkeiten, Dateien einzubinden. Die Tabelle zeigt, welche der Funktionen bei welchen Anforderungen zum Einsatz kommen sollte.

Die einzubindende Datei … … darf nur genau einmal verwendet werden … kann auch mehrfach verwendet werden
… muss unbedingt vorhanden sein require_once() require()
… darf auch fehlen include_once() include()

mögliche Fehler[Bearbeiten]

Die angeforderte Datei … … ist nicht vorhanden … wird mehrfach eingebunden
include() erzeugt eine Warnung
include_once() Rückgabewert TRUE
require_once() erzeugt einen Fehler
Programmabbruch
require()

Die Funktionen[Bearbeiten]

require_once()[Bearbeiten]

Die einzubindende Datei enthält eine PHP-Funktion, die für die Darstellung der Seite erforderlich ist, etwa weil sie die Verbindung zur Datenbank herstellt.

Würde man diese Datei versehentlich mehrfach einbinden, käme es bereits beim zweiten Mal zu einer Fehlermeldung, weil man eine vorhandene Funktion erneut definieren möchte. PHP bindet deshalb die Datei nur dann ein, wenn diese Datei bisher noch nicht eingebunden wurde.

require()[Bearbeiten]

Die einzubindende Datei ist für die Darstellung der Seite erforderlich, sie könnte aber auch an mehreren Stellen der Seite verwendet werden. Das kann etwa für Teile von Navigationen zutreffen.

include_once()[Bearbeiten]

In einem größeren Projekt soll mit Konstanten gearbeitet werden, die Einstellungen werden in einer Datei gespeichert. Es ist nicht schlimm, wenn die Datei fehlt, aber eine mehrfache Einbindung würde zu einem Fehler führen, weil auch Konstanten nur einmal definiert werden können.

include()[Bearbeiten]

Die einzubindende Datei ist für die Darstellung der Seite nicht erforderlich, sie kann auch an mehreren Stellen eingebunden sein. Das trifft etwa für die Auflistung von Produktdetails zu.

eine Frage der Sicherheit[Bearbeiten]

Achtung!

Das Einbinden von Dateien sollte niemals auf der Grundlage von Benutzereingaben erfolgen.
selbstmord.php
include ($_GET['file']);
Auf diese Weise könnten Angreifer beliebige Dateien einbinden und deren Inhalt anzeigen, durch http://localhost/selbstmord.php?file=../../../../../etc/passwd könnte möglicherweise die Passwortdatei des Servers zur Anzeige gebracht werden.

Solche Angriffsversuche sind nicht etwa selten, sondern tägliches, automatisiert stattfindendes Geschehen und es gibt terabyteweise Benutzernamen/Passwörter und Bankdaten, die beweisen, dass grob nachlässig gehandelt wurde.

Weblinks[Bearbeiten]