## Server Side Includes in HTML

| Allgemeines zu Server Side Includes Übersicht bekannter Server Side Includes

## Allgemeines zu Server Side Includes

Mit Hilfe von Server Side Includes (auch unter der Abkürzung SSI bekannt) können Sie direkt innerhalb von HTML-Dateien dynamische Information, z.B. Datum und Uhrzeit, einbinden. Sie können auch CGI-Programme starten und deren Ausgaben, beispielsweise einen Zählerstand mit Anzahl Zugriffen auf die aktuelle Datei, in die HTML-Datei einbinden. Oder Sie geben den aktuellen Inhalt diverser CGI-Umgebungsvariablen direkt in HTML aus - ohne Umweg über ein separates CGI-Script. Server Side Includes sind generell dazu gedacht, kleinere Teile einer HTML Seite dynamisch einzubinden.

Server Side Includes werden nur ausgeführt, wenn der Web-Browser die HTML-Datei über einen installierten Web-Server aufruft, also mit einem URI vom Typ http://.... Voraussetzung ist ferner, dass der installierte Web-Server die Server Side Includes unterstützt. Nicht alle Web-Server tun das, andere interpretieren nur einen Teil der möglichen Angaben. Wenn der Server keine Server Side Includes kennt, funktionieren die entsprechenden Anweisungen in der HTML-Datei nicht. Beim Austesten mit einem lokal installierten Web-Server lesen Sie hierzu bitte in der Dokumentation des Servers nach. Beim Einsatz auf einem öffentlichen Web-Server fragen Sie Ihren Provider, ob dessen Web-Server die Server Side Includes unterstützt.

Damit ein Web-Server sofort erkennt, dass eine HTML-Datei Server Side Include Anweisungen enthält, ist es üblich solche HTML-Dateien mit einer speziellen Dateinamenendung zu kennzeichnen. Gewöhnlich lauten die Dateiendungen .shtml, .shtm oder .sht. Die meisten Server ignorieren Server Side Include Anweisungen, wenn diese in einer gewöhnlichen HTML-Datei mit der Endung .htm oder .html stehen!

### Beispiel: Datei test.shtml

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Dynamisches HTML mit Server Side Includes</title>
    </head>
    <body>
    <h1>Dynamisches HTML mit Server Side Includes</h1>
    Datum/Uhrzeit auf dem Server-Rechner: <!--#echo var="DATE_LOCAL" --><br>
    Name dieser HTML-Datei: <!--#echo var="DOCUMENT_NAME" --><br>
    Installierte Server-Software: <!--#echo var="SERVER_SOFTWARE" --><br>
    Ihr Web-Browser: <!--#echo var="HTTP_USER_AGENT" -->
    <h3>Weitere Informationen:</h3>
    <!--#exec cgi="/cgi-bin/plapper.pl" -->
    </body>
    </html>

### Erläuterung:

Server Side Includes müssen Sie in einer HTML-Datei innerhalb eines Kommentars notieren. Es gibt verschiedene Server Side Include Anweisungen, beginnend mit einem Gatterzeichen `#`. Im obigen Beispiel kommen die Anweisungen `#echo` und `#exec` vor. Hinter der Anweisung folgt in der Regel eine Angabe der Art `Typ="Wert"`. Im Zusammenhang mit der Anweisung `#echo` ist beispielsweise die Angabe `var="Variablenname"` erlaubt, wobei "Variablenname" ein bestimmter, erlaubter Name sein muss. Es kann sich um Namen von CGI-Umgebungsvariablen handeln oder um spezielle Server Side Include Variablennamen (siehe Übersicht bekannter Server Side Includes weiter unten). Bei der Anweisung `#exec`, die ein Programm auf dem Server-Rechner ausführt, müssen Sie den Typ des Programms (im obigen Beispiel: `cgi`) und als Wert die Adresse des ausführbaren Programms (im obigen Beispiel: `"/cgi-bin/plapper.pl"`) angeben.

## Übersicht bekannter Server Side Includes

Die Tabelle ist nach Anweisungen alphabetisch sortiert.

Anweisung | Parameter/Wert | Beispiele
--- | --- | ---

`#config`

`errmsg="[Fehlermeldung]"`
`sizefmt="[Wert]"`
`timefmt="[Wert]"`

`errmsg` ist sinnvoll, um bei nicht anzeigbaren Server Side Includes eine verständliche Fehlermeldung auszugeben.

`sizefmt` bestimmt das Format für Dateigrößenangaben, z.B. sinnvoll vor dem Gebrauch von `#fsize`.

Erlaubte Werte:
`"abbrev"` (Dateigrößenangaben erfolgen in Kbyte).
`"bytes"` (Dateigrößenangaben erfolgen in Byte).

`timefmt` bestimmt das Ausgabeformat für Datum/Uhrzeit, z.B. sinnvoll vor dem Gebrauch von `#echo var="LOCAL_TIME"`.
Erlaubte Platzhalter:
`%a` = Wochentag kurz, z.B. sat
`%A` = Wochentag lang, z.B. Saturday
`%b` = Monat kurz, z.B. Apr
`%B` = Monat lang, z.B. April
`%d` = Tag im Monat 2stellig, z.B. 09
`%e` = Tag im Monat, z.B. 9
`%H` = Uhrzeit 24stündig, z.B. 15
`%I` = Uhrzeit 12stündig, z.B. 03
`%j` = julianisches Datum, z.B. 278
`%m` = Monat als Zahl, z.B. 05
`%M` = Minuten nach Stunde, z.B. 07
`%p` = bei%I: AM/PM, z.B. PM
`%S` = Sekunden, z.B. 01
`%U` = Kalenderwoche, z.B. 52
`%w` = n-ter Tag der Woche, z.B. 5
`%y` = Jahr 2stellig, z.B. 97
`%Y` = Jahr 4stellig, z.B. 1997
`%Z` = Zeitzone, z.B. MEZ

`<!--#config errmsg="SSI nicht anzeigbar!" -->`
`<!--#config sizefmt="bytes" -->`
`<!--#config timefmt="%d.%m.%Y, %H.%M" -->`

`#echo`

`var="[Variablenname]"`

Bei `[Variablenname]` sind CGI-Umgebungsvariablen erlaubt oder die folgenden, speziellen Variablennamen:
`DOCUMENT_NAME` = Name der HTML-Datei
`DOCUMENT_URI` = Pfad der HTML-Datei
`LAST_MODIFIED` = Zeitstempel der HTML-Datei
`QUERY_STRING_UNESCAPED` = Unkodierter GET-Übergabestring
`DATE_LOCAL` = Datum/Uhrzeit nach Server
`DATE_GMT` (Datum/Uhrzeit nach Greenwich-Zeit

`<!--#echo var="SERVER_NAME" -->`
`<!--#echo var="DATE_LOCAL" -->`

`#exec`

`cmd="[Pfad/Programmdatei]"`
`cgi="[CGI-Pfad/CGI-Programm/Script]"`

Benutzen Sie `cmd`, um ein beliebiges Programm auf dem Server-Rechner zu starten.
Benutzen Sie `cgi`, um ein CGI-Programm/CGI-Script auf dem Server-Rechner auszuführen.
Es sollte sich um Programme handeln, die Daten auf die Standardausgabe schreiben. Diese Datenausgaben werden dann direkt in die HTML-Datei geschrieben.

`<!--#exec cmd="/prog/search.exe *.htm" -->`
`<!--#exec cgi="/cgi-bin/counter.pl" -->`

`#fsize` | `file="[Pfad/Datei]"` `virtual = "[Pfad/Datei]"` Gibt die Größe der angegebenen Datei aus. Verwenden Sie `file` für absolute Pfadangaben auf dem Server-Rechner und `virtual` für relative Pfadangaben bezogen auf das Wurzelverzeichnis für Dokumente des Web-Servers. | `<!--#fsize virtual="/download/selfhtml.zip" -->`
`#flastmod` | `file="[Pfad/Datei]"` `virtual = "[Pfad/Datei]"` Gibt den Zeitstempel der angegebenen Datei aus. Verwenden Sie `file` für absolute Pfadangaben auf dem Server-Rechner und `virtual` für relative Pfadangaben bezogen auf das Wurzelverzeichnis für Dokumente des Web-Servers. | `<!--#flastmod file="/index.htm" -->`
`#include` | `file = "[Pfad/Datei]"` `virtual = "[Pfad/Datei]"` Gibt den Inhalt der angegebenen Datei aus. Verwenden Sie `file` für absolute Pfadangaben auf dem Server-Rechner und `virtual` für relative Pfadangaben bezogen auf das Wurzelverzeichnis für Dokumente des Web-Servers. | `<!--#include virtual="/news/news.htm" -->`

| HTML-Formulare und CGI
| CGI-Umgebungsvariablen

© 2001 selfhtml@teamone.de