yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Include-Möglichkeiten

Pflegeleichte Homepages bestehen aus mehreren Teilskripten, jedes hat eine spezielle Funktion. Und damit der Besucher dieses Wirrwarr nicht mitbekommt, gibt es einige Möglichkeiten, ihm eine komplette Seite zu anzeigen zu lassen. Theoretisch ist das Ganze

Pflegeleichte Homepages bestehen aus mehreren Teilskripten, jedes hat eine spezielle Funktion. Und damit der Besucher dieses Wirrwarr nicht mitbekommt, gibt es einige Möglichkeiten, ihm eine komplette Seite zu anzeigen zu lassen. Theoretisch ist das Ganze auch mit Frames realisierbar, nur genau diese sollte man umgehen.

1. SSI

Mit Server Side Includes (SSI) lassen sich bestimmte Operationen dynamisch auf den Webserver erledigen. Man kann z.B. an einer bestimmten Stelle das Datum oder die Uhrzeit einbinden ? oder auch ganze Seiten. Ob SSI auf einem Webserver installiert ist, sollte man beim Provider erkundigen, in der Regel ist es eine Leistung, die nicht standardgemäß vorhanden ist. Damit SSI ausgeführt wird, müssen die Dateien allerdings folgende Endungen besitzen: .shtml, .sht

Ein möglicher Befehl mit SSI könnte so aussehen:

Code:
<!--#include virtual="/header.html" -->


2. Include

Der Include-Gedanke ist folgender: ich habe eine ausgelagerte Datei, und füge diese ein. Dass das Einfügen innerhalb einer Skriptsprache erfolgt, hat man die Möglichkeit, auf die aktuellen Variablen zuzugreifen, man kann damit z.B. den Ausgabetext in einer Variable weitergeben, damit dieser bevor er auf den Bildschirm erscheint, noch weiterverarbeitet werden. Die eingebundene Datei kann aber auch Ausgaben direkt auf dem Bildschirm ausgeben.

Wenn man diese Variante benutzt, muss eins klar sein: es besteht die Gefahr, bestehende Parameter unbeabsichtigt zu überschreiben. Zum Debuggen sollte man solche Includes auf jeden Fall als erstes ausschließen.

Verwendet man lediglich statischen Text, so ist der Effekt der selbe wie bei SSI.

Code:
<?php
include("a.php");
?>


3. Include + Funktionsaufruf / Klassen

Der Includegedanke funktioniert hier anders: ich importiere mit den Include-Befehl lediglich eine Funktion oder Klasse. Diese Aktion wird in der Regel am Anfang des Skriptes einmal ausgeführt, und sollte mit Funktionen wie require_once bzw. include_once geschehen, um die Gefahr des doppelten Hereinladens auszuschließen.

Beim »Includieren« passiert allerdings noch nichts: es wird lediglich nur eine Funktion oder Klasse bereitgestellt. Man kann nun zu jedem beliebigen Zeitpunkt im Skript auf diese Funktionen und Klassen zurückgreifen.

Im Gegensatz zum direkten Include habe ich keine Variablen zur Verfügung, denn diese werden gekapselt. Wenn die Funktion oder Klasse etwas benötigt, so muss es als Parameter übergeben bzw. über return als Rückgabewert zurückgegeben werden. Möchte ich mehr als einen Wert zurückgeben, muss eine entsprechende Struktur gebaut werden.

Code:
<?php
include_once("a.php");
$text = functionyxz($text);
?>


4. fopen ()

fopen öffnet eine Datei, sie kann aber auch einen Stream über das HTTP-Protokoll öffnen. Die Übergabeparameter werden mittels der URL übergeben, der Rückgabewert ist der ausgegebene Text. Echo-Befehle innerhalb der geöffneten HTTP-Dateien werden nicht auf dem Monitor angezeigt, sondern erscheinen als Inhalt der geöffneten Datei, die ausgelesen wird. Die Handhabung mit fopen ist über HTTP genauso wie über das lokale Dateisystem. Einzige Schwachstelle dieser Variante: bei der Übergabe funktionieren nur HTTP-GET-Parameter. Sollte es bei dieser Variante zu Problemen kommen, so sollte man den Weg über die IP wählen, häufige Probleme bei der Funktion liegen beim DNS-Server.

Code:
<?php
if ($lesedatei = fopen ("http://domain.de/a.php?param=wert", "r"))
{
while (!feof($lesedatei))
{
$text.=fgets($lesedatei, 5000);
}
fclose($lesedatei);
}
?>


Persönlich favorisiere ich Variante 3, im Rahmen der PlugIns auf meiner Seite habe ich mich für die 2. Variante entschieden.

Geschrieben von René am 18.06.2004 (5927x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

Du hättest vielleicht noch die JavaScript-Möglichkeit nutzen können. :)
Geschrieben von nameless-one
Du hättest vielleicht noch die JavaScript-Möglichkeit nutzen können. :)
Geschrieben von nameless-one
JavaScript? Du meinst jetzt hoffentlich keine PopUps?
Geschrieben von René
Nein, ich meine document.write und externe JS-Dateien. So wurde mir auch des öfteren ein Include ohne PHP empfohlen. Als ich damals noch keinen Webspace mit PHP hatte.
Geschrieben von nameless-one
so eine Variante hatte ich auch einmal umgesetzt ...

es war die schlechteste Seite, die ich je gebaut habe, ging auch nie an den Start ;-)
Geschrieben von René
Nunja, aber es ist eine Möglichkeit, also kann man die nennen. Für Leute, die sich keinen PHP-Webspace zulegen können oder wollen, ist das immernoch eine gute Lösung.
Geschrieben von nameless-one
formuliere es am besten mal als Punkt, ich setze es mir dazu - aber ich rate davon ab ;-)

Das Problem ist einfach, daß man User vom Seitengenuß ausschließt, die kein JS aktiviert haben ...
Geschrieben von René