| |
| * Link führt ins Internet |
|
| |
Einbindung externer Skripte
|
|
Include
Der Befehl include("dateiname"); fügt an dieser Stelle den Inhalt der Datei 'dateiname' ein. Dadurch ist es möglich, Quellcode, der in mehreren Dateien benötigt wird, zentral zu halten, sodass Änderungen einfacher durchzuführen sind.
Die Datei, die eingefügt wird, wird als HTML-Code interpretiert. Deshalb muss, wenn in der Datei nur PHP-Code steht, diese Datei mit <?php anfangen und mit ?> enden bzw. mit anderen PHP-Code-Markierungen.
Wenn include() in Verbindung mit Bedingungen oder Schleifen eingesetzt wird, muss es immer in geschweiften Klammern geschrieben werden.
// Falsch
if ( $Bedingung )
include ("Datei.inc");
// Richtig
if ( $Bedingung ) {
include ("Datei.inc");
}
|
require
Ganz analog zu include() funktioniert require(). Es wird aber von PHP etwas anders behandelt. Der require()-Ausdruck wird beim ersten Aufruf durch die Datei ersetzt. Wie bei include() wird erst einmal aus dem PHP-Modus herausgegangen. Es gibt drei wesentliche Unterschiede zu include():
. Zum einen wird require() immer ausgeführt, also auch dann, wenn es eigentlich abhängig von einer IF-Anweisung nicht ausgeführt werden dürfte;
. Zum anderen wird es innerhalb einer Schleife (for,while) nur ein einziges Mal ausgeführt - egal, wie oft die Schleife durchlaufen wird, der Inhalt der eingefügten Datei wird mehrmals abgearbeitet.
. Zum dritten liegt der Unterschied in der Reaktion auf nicht vorhandene Dateien: include() gibt nur ein "Warning" aus und PHP läuft weiter, bei require() bricht PHP mit einem "Fatal error:" ab.
// Schreibweisen
require 'funktionen.php';
require $datn;
require ('funktionen.txt');
|
include_once, require_once
Seit PHP4 gibt es neben den Funktionen include() und require() auch noch die Funktionen include_once() und require_once(). Der Name zeigt schon, wo der Unterschied liegt: Bei den *_once() Funktionen wird die Datei nur einmal eingefügt, unabhängig davon, wie häufig man versucht, sie einzufügen.
Der Sinn ist einfach: Bei umfangreichen Webseiten gibt es häufig eine Datei, die die zentralen Funktionen enthält. Da diese in den Webseiten benötigt werden, fügt man sie immer am Anfang ein. Soweit kein Problem. Sobald aber mehrere zentrale Funktionsdateien existieren, die sich auch untereinander benötigen, wird es schwierig, weil jede nur einmal eingefügt werden darf.
Tipps im Umgang mit externen Dateien
Normalerweise können Nutzer den Inhalt der Skripte nicht sehen. Jede Datei mit der Endung .php3, .php4 oder .php wird vom Webserver an den PHP-Interpreter weitergeleitet und von diesem verarbeitet. Es ist natürlich ohne weiteres möglich jede andere Endung anzugeben. Oft werden Dateien, dit mit include eingeschlossen werden sollen, mit .inc bezeichnet. Auch diese Endung wird nicht verarbeitet. Das ist für den Ablauf des Skripts egal - die Verarbeitung erfolgt im Rahmen des "umgebenden" Skripts und damit unter dessen Regie.
Was jedoch nicht egal sein dürfte, ist das damit aufkommende Sicherheitsproblem. Sollte ein Nutzer den Pfad zu den Include-Dateien herausbekommen, kann er deren Namen in der Adresszeile des Browsers direkt eingeben. Der Webserver wird die Endung nicht kennen und dem Browser die Datei direkt zu senden. Dieser erkennt ein einfaches Textdokument und stellt ihn dar. Da in Include-Dateien auch Kennwörter für Datenbanken stehen können, wäre diese äusserst problematisch.
Diese Problem kann man jedoch recht schnell beseitigen. Benennen Sie sämtliche Include-Dateien mit .inc.php um. So haben Sie eine eindeutige Kennzeichnung und erzwingen im Notfall das Parsen des Codes durch den PHP-Interpreter. Das mag zwar zu einer Fehlermeldung führen, sollte diese Datei einzeln aufgerufen werden, an den Inhalt gelangt der Nutzer dennoch nicht.
|
|
|
|
|
|
|