SSI  (Server Side Includes)

Was ist überhaupt SSI?

SSI bezeichnet eine Reihe von Befehlen, die von der Server-Software ausgeführt werden. Allerdings unterstützen nicht alle Web-Server SSI-Befehle. Zuerst wollen wir Ihnen zeigen wie Sie überprüfen können, ob Ihr Web-Server SSI unterstützt.
Kopieren Sie den folgenden Quellcode in eine Textdatei und speichern Sie diese mit der Endung ".shtml" ab. Diese Endung ist erforderlich damit der Server überhaupt nach SSI-Befehlen sucht.

<html>
<head>
<title>Test mit Server Side Includes</title>
</head>
<body>
<h1>TEST-Seite mit Server Side Includes</h1>
Datum/Uhrzeit auf dem Server:
<!--#echo var="DATE_LOCAL"--><br>
Name dieser Datei:
<!--#echo var="DOCUMENT_NAME"--><br>
Server-Software:
<!--#echo var="SERVER_SOFTWARE"--><br>
Ihr WWW-Browser:
<!--#echo var="HTTP_USER_AGENT"-->
</body>
</html>

Übertragen Sie diese Datei auf Ihren Server und rufen Sie sie mit einem Browser auf. Wenn Ihr Server SSI unterstützt, dann sollten Sie jetzt die Informationen angezeigt bekommen, wie zum Beispiel: aktuelles Datum, Name der HTML-Datei, die Bezeichnung Ihres Browsers.

Falls Sie dies nicht angezeigt bekommen, kann es sein, das Ihr Hosting Provider diese Funktion ausgeschaltet hat oder nicht anbietet bzw. nicht anbieten kann.

Was kann man mit SSI machen?

Mit Hilfe von SSI kann man immer wiederkehrende HTML-Objekte in eine Datei auslagern und dies von allen anderen Seiten einbinden. Damit kann man zum Beispiel eine Navigationsleiste auslagern. Wenn dann Änderungen an der Navigationsleiste durchgeführt werden müssen, brauchen Sie nur eine einzige Datei zu ändern.

Es wäre sogar möglich, alle HTML-Seiten so zu erstellen, das diese nur den puren Inhalt enthalten, und alle Gestaltungselemente mit Hilfe von SSI eingefügt werden. Damit können Sie dann, mit wenigen "Handgriffen" das komplette Seitenlayout ändern.

Sie können mit einem SSI-Befehl auch ein CGI-Skript aufrufen. Die Ausgabe des Skriptes wird dann einfach an der Stelle in die HTML-Seite eingefügt, wo der SSI-Befehl stand. So können Sie Datenbanken in Ihre Web-Site einbinden ohne das Ihre Besucher das merken.

Der Vorteil beim Einsatz von SSI mit CGI-Skripten ist die einfache Intergration in das Seiten-Layout. Dabei muss das Layout nicht extra im Skript einprogrammiert werden, sondern das Skript gibt beispielsweise nur einfache HTML-Abschnitte aus, die in Tabellen eingefügt werden können.

SSI - Befehle

Von Server zu Server kann es bei SSI-Befehlen Unterschiede geben. Einige Server können nicht alle Befehle interpretieren. Andere wiederum haben zusätzliche Befehle. Die SSI-Befehle die wir Ihnen hier vorstellen, gelten für Apache, dem mit über 70% Marktanteil am weitest verbreiten Server.

Ein SSI-Befehl ist folgendermaßen aufgebaut:

Syntax:   <!--#element attribut=wert attribut=wert ... -->

Die Einbindung in HTML-Kommentare ist nötig, damit der Server SSI-Befehle leichter erkennen kann. Außerdem werden so die Befehle nicht direkt auf der Seite angezeigt, selbst wenn der Server SSI nicht unterstützt.

Im folgenden wollen wir Ihnen die Elemente und die möglichen Attribute vorstellen:

config
Über dieses Element können Sie Ausgabeformate festlegen, die von anderen Befehlen verwendet werden sollen.

  • sizefmt
    Der Wert legt das Format fest, welches für die Ausgabe der Dateigröße verwendet wird. "bytes" bewirkt das die Größe in Bytes ausgegeben wird, und "abbrev" bewirkt eine verkürzte Ausgabe in KByte oder MByte.

    Beispiel:   <!--#config sizefmt="abbrev"-->

  • timefmt
    Dieser Wert legt das Ausgabeformat für Datumsangaben fest. Dazu verwenden Sie sogenannte Variable. Wollen Sie also das Datum im Format "27.08.1999, 15:26" müssen Sie als Wert folgende Zeichenfolge angeben "%d.%m.%Y, %H:%M". Weitere Variable finden Sie in Selfhtml.

    Beispiel:   <!--#config timefmt="%d.%m.%Y, %H:%M"-->

  • errmsg
    Dieser String wird ausgegeben, wenn ein SSI-Befehl nicht ausgeführt werden konnte.

echo
Dieses Element fügt den Inhalt einer Umgebungsvariablen in die Seite ein. Verwenden Sie dafür das Attribut "var". Ein paar nützliche Variablen sind:

  • DOCUMENT_NAME (Name der HTML-Datei)
  • DOCUMENT_URI (Pfad der HTML-Datei)
  • LAST_MODIFIED (letzte Änderung der HTML-Datei)
  • DATE_LOCAL (Datum/Uhrzeit auf dem Server)
  • HTTP_REFERER (URL der vorhergehenden Seite)
    Beispiele:
    <!--#echo var="DOCUMENT_NAME"-->
    <!--#echo var="LAST_MODIFIED"-->

exec
Mit diesem Befehl können Sie Programme auf dem Server ausführen. Aber auch Skripte lassen sich so starten. Dieser Befehl ist häufig gesperrt, da er ein Sicherheitsproblem darstellt.

  • cmd
    Hiermit können Sie das angegebene Programm auf dem Server ausführen.
  • cgi
    Mit diesem Attribut können Sie CGI-Skripte ausführen. Da Sie mit dem Befehl "include virtual" auch einen Übergabestring angeben können, sollten Sie diesen Befehl verwenden.

    Beispiel:   <!--#exec cgi="/cgi-bin/test_skript.pl"-->

fsize
Dieser Befehl fügt die Größe der angegebenen Datei ein. Mögliche Attribut sind:

  • file
    Der Wert ist ein Pfad relativ zu der Seite die diesen Befehl aufruft.
  • virtual
    Dieser Wert ist ein URL relativ zur aktuellen HTML-Seite. Beginnen Sie mit einem Slash "/", gilt der Pfad ab dem Hauptverzeichnis der Domain (zum Beispiel: "/news/")

    Beispiel:   <!--#exec virtual="/tipps/index.html"-->

flastmod
Dieser Befehl fügt das Datum der letzten Änderung der angegebenen Datei ein. Die Attribute entsprechen denen bei "fsize".

Beispiel:   <!--#flastmod virtual="/tipps/index.html"-->

include
Mit diesem Befehl können Sie beliebige Dateien in die HTML-Seiten integrieren.

  • file
    Hier können Sie nur einen relativen Pfad angeben, dürfen aber nicht "../" verwenden. Auch dürfen Sie hier keinen absoluten Pfad angeben. Verwenden Sie vorzugsweise das Attribut "virtual".
  • virtual
    Der Wert für dieses Attribut muss ein URL sein, der relativ zu dem aktuellen Dokument notiert ist. Mit einem führenden Slash "/" können Sie wieder vom Ursprung der Domain ausgehen. Also erreichen Sie ein CGI-Skript über "/cgi-bin/skript.pl".

    Bei diesem Befehl können Sie dem CGI-Skript außerdem einen String übergeben. Dieser könnte zum Beispiel Formulareingaben simulieren. Zum Beispiel könnten Sie mit "/cgi-bin/search.pl?was=suchen&string=tipps" einem Such-Skript gleich die nötigen Parameter übergeben und in die HTML-Seite gleich fertige Suchergebnisse einfügen.

    Beispiel:   <!--#include virtual="/cgi-bin/search.pl?was=suchen&string=tipps"-->