| ## 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