vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


Tag 14

Erste serverseitige Techniken

Zum Ende dieser Woche wollen wir die Client-Seite verlassen und uns ein wenig auf der Serverseite umtun.

Die Themen heute:

14.1 Serverseitiges JavaScript

Ja, Sie haben richtig gelesen. Mit JavaScript, der Standardsprache für clientseitige Programmierung, kann man auch serverseitige Anwendungen schreiben.

Serverseitiges JavaScript verwendet die gleiche Syntax wie clientseitiges JavaScript (logisch, es ist ja nach wie vor die gleiche Programmiersprache), nicht aber die gleichen vordefinierten Objekte. An die Stelle von window, document, location, etc. treten auf der Serverseite Objekte wie server, projekt, client, request oder file, mit deren Hilfe man beispielsweise Formulareingaben bearbeiten, Dateien öffnen und speichern oder auf Datenbanken zugreifen kann - alles wie gesagt auf der Serverseite!

Wir werden in diesem Buch allerdings nicht näher auf die serverseitigen Objekte oder die Möglichkeiten der serverseitigen JavaScript-Programmierung eingehen, da JavaScript auf der Serverseite bei weitem nicht die gleiche Bedeutung zukommt, wie bei der clientseitigen Programmierung. Die Serverseite, das ist die Domäne von Sprachen wie Perl oder C++ und von Technologien wie ASP (Active Server Pages) oder PHP, mit denen wir uns in der dritten Woche befassen werden.

Wer dennoch Javascript zur serverseitigen Programmierung einsetzen möchte, der braucht zuerst einmal einen entsprechenden Webserver, der serverseitiges JavaScript unterstützt. Hier käme vor allem der Enterprise-Server von Netscape in Frage. Microsofts IIS-Server unterstützt serverseitiges JavaScript im Rahmen seiner Active Server Pages, wobei anzumerken ist, dass ASP traditionell zumeist mit VBScript, dem Microsoft-eigenen Konkurrenzprodukt zu JavaScript, programmiert wird (siehe Kapitel 18).

14.2 Server Side Includes

Server Side Includes (SSI) sind besondere, in einem HTML-Dokument eingebettete Kommentare, die als Platzhalter für spezielle Inhalte fungieren, die dynamisch beim Aufruf der betreffenden Webseite eingefügt werden.

Fordert ein Webbrowser von einem Webserver ein HTML-Dokument an, das Server Side Includes enthält, schickt der Webserver die Datei nicht gleich wie sonst an den Browser. Statt dessen liest er das HTML-Dokument zuerst ein, sucht nach den darin enthaltenen Server Side Includes und wertet diese aus - was bedeutet, dass er die SSIs durch einen dynamisch erzeugten Inhalt ersetzt. Das resultierende HTML-Dokument schickt er dann an den Browser. Voraussetzung dafür, dass alles wie gewünscht funktioniert, ist allerdings

Es gibt viele verschiedene Implementierungen von Server Side Includes, die sich in ihrer Komplexität stark unterscheiden. Wir werden uns im Folgenden auf die Server Side Includes beschränken, die von den meisten Webservern, insbesondere Apache, PWS und Omni HTTPd, unterstützt werden.

Konfiguration des Webservers

Um die Auswertung von Server Side Includes zu aktivieren, müssen Sie in zwei Schritten vorgehen.

  1. Zuerst müssen Sie dem Server angeben, welche Dateien auf SSIs hin untersucht und entsprechend verarbeitet werden sollen.

Wenn Sie Ihre Webseiten auf dem Webserver Ihrer Firma oder eines Internet Providers veröffentlichen, können Sie die Extension natürlich nicht selbst festlegen, sondern müssen bei dem verantwortlichen Webadministrator nachfragen, welche Extension Sie Ihren SSI-Webseiten geben müssen.

  1. Danach müssen Sie noch die Unterstützung von Server Side Includes einschalten, damit der Webserver die Webseiten mit den angegebenen Extensionen auch wirklich analysiert und die gefundenen Server Side Includes auswertet.

Schauen wir uns kurz an, wie unsere drei Beispielwebserver für die Verarbeitung von Server Side Includes konfiguriert werden.

Der Apache-Server

Das Apache-Server ist standardmäßig meist so konfiguriert, dass er keine Server Side Includes unterstützt. Das hat zum einem damit zu tun, dass die Auswertung der Server Side Includes die Performance des Webservers herabsetzt, zum anderen damit, dass SSIs für einen Webserver auch ein gewisses Sicherheitsrisiko darstellen (dann nämlich, wenn man den SSIs auch das Ausführen von Systembefehlen erlaubt, siehe unten).

Um die Auswertung von Server Side Includes zu aktivieren, gehen Sie wie folgt vor.

  1. Um festzulegen, welche Dateien nach Server Side Includes durchsucht werden sollen, müssen Sie die Datei httpd.conf (srm.conf für ältere Versionen des Webservers) öffnen und um folgenden Eintrag erweitern:
    AddType text/x-server-parsed-html .shtml
  1. Jetzt müssen Sie noch die Server Side Includes aktivieren.

Der Personal Webserver

Der Personal Webserver ist standardmäßig so eingerichtet, dass er Server Side Includes in Webseiten mit den Extensionen .shtml, .shtm und .stm unterstützt.

Unter Windows NT/2000 kann man über den Internetdienst-Manager (siehe Anhang A) eigene Extensionen festlegen. Unter Windows 95/98 geht dies nur durch direkte Manipulation der Systemregistrierung.

Damit der Webserver die Dateien mit den Server Side Includes wie gewünscht auswertet, müssen Sie gegebenenfalls noch sicherstellen, dass für die Verzeichnisse, in denen die HTML-Dokumente mit den SSIs liegen, Skript- und Ausführungsberechtigung gesetzt sind.

Der OmniHTTPd-Server

Der OmniHTTPd-Webserver ist standardmäßig so eingerichtet, dass er Server Side Includes in Webseiten mit der Extension .shtml unterstützt.

Um eine andere Dateiextension festzulegen, rufen Sie über die Programmgruppe des OmniHTTPd-Webservers das Administrationsprogramm auf. Klicken Sie auf den Schalter Web Server Global Settings und wechseln Sie in dem erscheinenden Dialog zur Registerkarte MIME. Scrollen Sie in dem Listenfeld zu dem Eintrag:

wwwserver/html-ssi .shtml

Markieren Sie den Eintrag, geben Sie im Feld Actual eine andere Dateiextension ein und klicken Sie auf einen der Schalter zum Hinzufügen (Add) oder Ersetzen (Replace).

Abbildung 14.1:  Dateierweiterung für Webseiten mit Server Side Includes festlegen

Um sicherzustellen, dass der Webserver die Dateien mit den Server Side Includes wie gewünscht auswertet, wechseln Sie zur Registerkarte Advanced und vergewissern Sie sich, dass die Option Process Server Side Includes (SSI) aktiviert ist.

Eine Testwebseite

Um die Verarbeitung von Server Side Includes zu testen, speichern Sie in einem Verzeichnis auf Ihrem Webserver folgende beiden Dateien ab.

Listing 14.1: testssi.dat - Datei, deren Inhalt vom Webserver in eine .shtml-Datei eingefügt wird

<p>Wenn Sie diesen Text lesen können, wurde die SSI-Anweisung korrekt ausgeführt!</p>

Listing 14.2: hauptseite.shtml - Webseite mit Server Side Include zum Einfügen von testssi.dat

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Testseite für Server Side Includes</title>
</head>

<body>

<p>Dies ist normales HTML.</p>

<!--#include file="testssi.dat"-->

<p>Dies ist auch normales HTML.</p>

</body>
</html>

Wenn Sie die Webseite hauptseite.html als Datei (mit Pfadangabe statt URL) in den Browser laden, sehen Sie nur die beiden Absätze mit dem normalen HTML. Wenn Sie die Webseite dagegen von Ihrem lokalen Webserver laden (siehe Abbildung 14.2) und dieser die Server Side Include-Anweisung korrekt verarbeitet, sehen Sie auch den Text aus der Datei testssi.dat, der an der Stelle des Kommentars eingefügt wird.

Abbildung 14.2:  Webseite mit vom Server eingefügtem Text

Anwendungsbeispiele

Was kann man mit Server Side Includes anfangen?

Mit Server Side Includes kann man HTML-Code, Grafiken oder die Werte bestimmter Variablen in Webseiten einfügen - und zwar dynamisch, das heißt, die Inhalte werden jedes Mal neu eingefügt, sowie die Webseite von irgendeinem Browser angefordert wird. Ein typisches Beispiel dafür, wie man dies zum Aufbau dynamischer Webseiten nutzen kann, ist die Einblendung des aktuellen Datums.

Einbindung von Server Side Includes

Listing 14.3: datum.shtml - Datumsausgabe mit SSI

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Server Side Includes</title>
</head>

<body>

<h1>Datumsausgabe mit SSI</h1>

<p>Aktuelles Datum: <!--#echo var="DATE_LOCAL" --></p>

</body>
</html>

Abbildung 14.3:  Ausgabe von <!--#echo var="DATE_LOCAL" -->

Die Webseite datum.shtml ist im Grunde eine ganz normale Webseite, die statt mit der Extension .html mit der Extension .shtml abgespeichert wird (unter der Voraussetzung, dass der betreffende Webserver so konfiguriert ist, dass er .shtml-Dateien auf Server Side Includes hin durchsucht).

In diese Webseite können wir mit Hilfe von HTML-Kommentaren Server Side Includes einbauen, die beim Aufruf der Webseite vom Webserver erkannt und durch einen passenden dynamischen Inhalt ersetzt werden. Alle Server Side Includes sind nach dem gleichen Schema aufgebaut:

<!--#ssibefehl parameter="argument"--> 

ssibefehl steht hier für einen von sechs Befehlen: config, include, echo, fsize, flastmod oder exec. Einzelne Webserver stellen zwar noch weitere SSI-Befehle zur Verfügung, doch wollen wir uns hier auf die Befehle konzentrieren, die derzeit von den meisten Servern unterstützt werden und sozusagen das SSI-Grundvokabular bilden.

Auf den SSI-Befehl folgen die Parameter, über die man die Verarbeitung des Befehls genauer steuern kann. Welche Parameter zur Verfügung stehen und welche Werte man diesen als Argument übergeben kann, hängt von dem jeweiligen SSI-Befehl.

Für den SSI-Befehl #echo lautet der Parameter beispielsweise var und als Wert kann man ihm eine der auf dem Server verfügbaren CGI-Umgebungsvariablen (siehe Kapitel 17) oder eine der folgenden nur für SSI-Seiten verfügbaren Umgebungsvariablen zuweisen.

Umgebungsvariablen sind »Variablen«, die nicht von einem Programms, sondern vom Betriebssystem des Rechners definiert und erzeugt werden und auf die jedes Programm, das auf dem Rechner ausgeführt wird, abgefragt werden können.

SSI-Umgebungsvariable

Zweck

DOCUMENT_NAME

Der Name des Dokuments, das der Server zurückliefert

DOCUMENT_URI

Der URI des Dokuments. Hinweis: Dieses ist ein virtueller und kein absoluter URI.

QUERY_STRING_UNESCAPED

Der eigentliche QUERY_STRING, falls einer mit aufgenommen wurde.

DATE_LOCAL

Das örtliche Datum auf dem Webserver

DATE_GMT

Das Datum in westlicher Zeit (GMT).

LAST_MODIFIED

Das Datum, an dem das Dokument zuletzt geändert wurde.

Tabelle 14.1: SSI-Umgebungsvariablen.

Mit Hilfe des #echo-Befehls können Sie die Werte dieser Umgebungsvariablen in den HTML-Code einer Webseite einfügen. So fügt zum Beispiel die SSI-Anweisung aus Listing 14.3 das aktuelle Datum in die Webseite ein:

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

Wie Sie bereits aus Kapitel 8.3 wissen, kann man das aktuelle Datum nicht nur per SSI, sondern auch mit Hilfe des JavaScript-Objekts Date in eine Webseite einfügen. Da stellt sich die Frage, welchen Weg man wählen soll. Nun, grundsätzlich ist der JavaScript-Befehl natürlich vorzuziehen, weil er auf dem Client-Rechner ausgeführt wird und daher schneller ist und den Server nicht belastet. Doch nicht immer sind das Date-Objekt und der Server Side Include beliebig austauschbar, denn während Date das aktuelle Datum auf dem Client-Rechner liefert, fügt der Server Side Include das aktuelle Datum auf dem Server-Rechner ein - je nachdem, in welchen Zeitzonen Server- und Client-Rechner liegen, kann das einen Unterschied machen. (Beachten Sie auch, dass manche Server zusätzlich zum Datum die aktuelle Uhrzeit ausgeben.) Überlegen Sie sich also, welches Datum Sie ausgeben wollen.

Das Datum der letzten Änderung anzeigen

Nichts ist uninteressanter als heute die Neuigkeiten von gestern zu lesen. Wer im Internet Webseiten mit aktuellem Inhalt präsentiert, sollte es daher nicht versäumen, in den Webseiten zu vermerken, wann diese das letzte Mal überarbeitet und aktualisiert wurden. Dazu braucht man sicherlich keine Server Side Includes, schließlich kann man das Datum der letzten Änderung auch als ganz normalen HTML-Code eingeben.

<p>Letzte Änderung: Montag, der 12.05.2000</p>

Dies ist akzeptabel, wenn man es mit einer relativ überschaubaren Anzahl von Webseiten zu tun hat, die in größeren Zeitabständen (beispielsweise einmal im Monat) aktualisiert werden. Steigt jedoch die Anzahl der zu verwaltenden Webseiten, werden die Zeitabstände zwischen den Aktualisierungen kleiner oder tut man sich einfach schwer damit, die Aktualisierung des Datums nicht zu vergessen, ist es besser, die Eintragung des Datums der letzten Aktualisierung zu automatisieren. Mit Hilfe von Server Side Includes ist dies kein Problem:

Listing 14.4: lastmodified.shtml

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Server Side Includes</title>
</head>

<body>

<h1>Das Wetter</h1>

<p>Morgens diesig, in den Niederungen dichter Nebel. Tagsüber Temperaturen zwischen 4 und 6 Grad Celsisus. Gegen Abend Gewitter. Fazit: Wer heute Sonne haben will, muss sie im Herzen tragen.

<p>Letzte Änderung: <!--#echo var="LAST_MODIFIED" --></p>

</body>
</html>

Wieder verwenden wir den SSI-Befehl #echo, diesmal aber mit dem Argument LAST- MODIFIED.

Der Befehl #echo mit dem Argument LAST-MODIFIED fragt vom Betriebssystem das Datum der letzten Änderung der Webseite ab und fügt es in die Webseite ein. Wenn Sie viel mit dynamischen Inhalten arbeiten, kann es aber sein, dass der aktualisierte Inhalt einer Webseite gar nicht auf Änderungen in der Webseite selbst zurückgeht, sondern auf Änderungen in Dateien, die dynamisch eingebunden werden (beispielsweise eine aktualisierte JavaScript-Datei oder eine mit Hilfe des SSI-Befehls #include eingefügte Datei). In so einem Fall können Sie mit Hilfe des SSI-Befehls #flastmod angeben, dass nicht das Datum der letzten Änderung der aktuellen Webseite, sondern das Datum der letzten Änderung der eingefügten Datei angezeigt werden soll: <!--#flastmod file="eineDatei.html" -->.

Modularer Seitenaufbau mit Server Side Includes

Viele Webs sind so aufgebaut, dass die einzelnen Webseiten über gemeinsame Navigations- und Design-Elemente verfügen - beispielsweise ein Banner im oberen Bereich der Webseiten und eine am linken Rand befindliche Navigationsleiste mit Hyperlinks zum Aufrufen der einzelnen Webseiten des Webs. Ein Beispiel für ein solches Web haben wir unter anderem in Kapitel 3, bei der Besprechung der Frames und Inline- Frames, gesehen. Wir greifen hier noch einmal das Beispiel des als Tabelle realisierten Gedichte-Webs aus diesem Kapitel auf. Es bestand aus fünf Webseiten (tabelle.html, panther.html, karussell.html, herbsttag.html und saal.html), die alle über das gleiche Banner (in unserem Falle eine einfache Überschrift) und die gleiche Navigationsstruktur (eine Inhaltsverzeichnis aus Hyperlinks) verfügten. Die Hauptseite tabelle.html spiegelt diesen Grundaufbau der Seiten wider.

Listing 14.5: tabelle.html aus Kapitel 3

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Rilke-Gedichte</title>
</head>

<body>

<table border="0" width="700" cellpadding="10" cellspacing="0">
<colgroup span="2">
<col width="200">
<col width="500">
</colgroup>
<tr>
<td colspan="2">
<h1>Ausgewählte Rilke-Gedichte</h1>
</td>
</tr>
<tr>
<td width="200" valign="top">
<dl>
<dt>Rilke</dt>
<dd><a href="panther.html" >Der Panther</a></dd>
<dd><a href="herbsttag.html">Herbsttag</a></dd>
<dd><a href="saal.html">Im Saal</a></dd>
<dd><a href="karussell.html">Das Karussell</a></dd>
</dl>
</td>
<td width="500" valign="top">
&nbsp;
</td>
</tr>
</table>

</body>
</html>

Das Problem hierbei ist, dass wir in allen Webseiten den identischen Code für das »Banner« und das Inhaltsverzeichnis stehen haben. Will man ein neues Banner verwenden oder einen Hyperlink auf ein neues Gedicht in das Inhaltsverzeichnis einfügen, muss man alle Webseiten einzeln durchgehen und jedes Mal den Code für Banner und/ oder Inhaltsverzeichnis anpassen.

In Kapitel 3 haben Sie gesehen, wie man sich diese Arbeit durch Verwendung von Frames sparen kann. Hier wollen wir Ihnen noch eine weitere Alternative zeigen: das Einbinden von Dateiinhalten mit Hilfe des #include-Befehls.

  1. Zuerst gehen wir ähnlich wie bei der Arbeit mit Frames vor: wir lagern den einzufügenden HTML-Code in eine eigene Datei aus. Diese Datei muss allerdings keine HTML-Seite sein und sie muss auch kein vollständiges HTML-Grundgerüst enthalten. Speichern Sie in der Datei lediglich den HTML-Code, der später vom Webserver an der Stelle des Server Side Includes eingefügt werden soll.

Listing 14.6: banner.txt

<h1>Ausgewählte Rilke-Gedichte</h1>

Listing 14.7: inhalt.txt

<dl>
<dt>Rilke</dt>
<dd><a href="panther.shtml" >Der Panther</a></dd>
<dd><a href="herbsttag.shtml">Herbsttag</a></dd>
<dd><a href="saal.shtml">Im Saal</a></dd>
<dd><a href="karussell.shtml">Das Karussell</a></dd>
</dl>
  1. Danach ersetzen wir in allen Webseiten den Code für Banner und Inhaltsverzeichnis durch die entsprechenden Server Side Includes.

Listing 14.8: tabelle.html - Einfügen von Dateiinhalten mit #include

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Rilke-Gedichte</title>
</head>

<body>

<table border="0" width="700" cellpadding="10" cellspacing="0">
<colgroup span="2">
<col width="200">
<col width="500">
</colgroup>
<tr>
<td colspan="2">
<!--#include file="banner.txt"-->
</td>
</tr>
<tr>
<td width="200" valign="top">
<!--#include file="inhalt.txt"-->
</td>
<td width="500" valign="top">
&nbsp;
</td>
</tr>
</table>

</body>
</html>

Abbildung 14.4:  Webseite mit SSIs für Banner und Inhaltsverzeichnis

Die wichtigsten Server Side Includes

Die grundlegende Syntax für Server-Side Includes lautet:

<!--#ssibefehl parameter="argument"--> 

ssibefehl steht hier für einen von sechs Befehlen:

#config

Mit config können Sie das Verhalten von bestimmten Server-Side Includes konfigurieren. Dies betrifft drei Variablen:

Die Fehlermeldung errmsg wird angezeigt, wenn ein SSI-Fehler aufgetaucht ist.

<!--#config errmsg="Server Side Include-Fehler. Wenden Sie sich an Ihren Webadministrator!">

In diesem Fall erscheint in Ihrem HTML-Dokument die Meldung »Server Side Include- Fehler. Wenden Sie sich an Ihren Webadministrator!«, wenn ein SSI-Fehler auftritt.

Wenn Sie den SSI-Befehl fsize verwenden, um die Größe einer Datei zurückzugeben (siehe unten), können Sie ihn so konfigurieren, dass er den Werte in Bytes angibt:

<!--#config sizefmt="bytes" -->

Oder Sie konfigurieren ihn mit einer Abkürzung (zum Beispiel Mb für Megabytes oder Kb für Kilobytes):

<!--#config sizefmt="abkrz" -->

Außerdem können Sie das Format des SSI-Zeitstrings konfigurieren. Wenn Ihre Konfiguration beispielsweise wie folgt aussieht:

<!--#config timefmt="%A, %B %d, %Y" -->

werden Datumsangaben in folgendem Format ausgegeben:

Sonntag, März 3, 1996

Platzhalter

Bedeutung

%a

Abkürzung für einen Wochentag

%A

Wochentag

%b

Abkürzung für den Monat

%B

Monatsname

%d

Tag

%D

Datum in reinen Zahlen

%H, %I

Stunde (in 24- oder 12-Stundenformat)

%m

Monatsnummer

%M

Minuten

%S

Sekunden

%T

Uhrzeit

%y

zweistellige Jahreszahl

%Y

vierstellige Jahreszahl

%Z

Zeitzone

Tabelle 14.2: Die wichtigsten Platzhalter für sizefmt1

1

    Beachten Sie, dass nicht alle Platzhalter von allen Webservern unterstützt werden.

#echo

Mit #echo können Sie den Wert einer CGI-Umgebungsvariablen oder einer speziellen SSI- Umgebungsvariablen anzeigen.

SSI-Umgebungsvariable

Zweck

DOCUMENT_NAME

Der Name des Dokuments, das der Server zurückliefert

DOCUMENT_URI

Der URI des Dokuments. Hinweis: Dieses ist ein virtueller und kein absoluter URI.

QUERY_STRING_UNESCAPED

Der eigentliche QUERY_STRING, falls einer mit aufgenommen wurde.

DATE_LOCAL

Das örtliche Datum auf dem Webserver

DATE_GMT

Das Datum in westlicher Zeit (GMT).

LAST_MODIFIED

Das Datum, an dem das Dokument zuletzt geändert wurde.

Tabelle 14.3: SSI-Umgebungsvariablen.

#exec

Mit #exec können Sie die Ausgabe eines CGI-Programms (siehe Kapitel 17) oder eines Systembefehls in eine Webseite einfügen. Zu #exec gibt es zwei Parameter: cgi und cmd. Wenn Sie die Ausgabe eines CGI-Programms mit aufnehmen wollen, verwenden Sie cgi.

<!--#exec cgi="/cgi-bin/gaestebuch.cgi" -->

Beim Aufruf eines CGI-Programms über einen Server Side Include kann man keine Aufrufargumente an das CGI-Programm übergeben.

Wenn Sie einen Systembefehl ausführen wollen, verwenden Sie cmd. Stellen Sie sicher, dass Sie den vollständigen Pfadnamen des Befehls angeben. Um zum Beispiel die Ausgabe des Programms /bin/date mit aufzunehmen, schreiben Sie:

<!--#exec cmd="/bin/date" -->

Aus Rücksicht auf die Effizienz und Sicherheit des Webservers sollte man keine #exec-Includes verwenden.

#flastmod

Sie können #flastmod verwenden, um das letzte Änderungsdatum einer Datei - die entweder als Argument zu einer der Parameter file oder virtual spezifiziert wurde - anzuzeigen.

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

Sie können mit #config das Format des Datums konfigurieren (siehe oben).

#fsize

Verwenden Sie #fsize, um die Größe einer angegebenen Datei anzuzeigen.

<!--#fsize file="hello.html" -->

Sie können das Ergebnis des Include-Befehls mit Hilfe von #config so konfigurieren, dass er den Wert entweder in Bytes oder in abgekürzter Form anzeigt (siehe oben).

#include

Mit #include können Sie entweder eine andere Datei oder, im Falle des Apache-Servers, die Ausgabe eines CGI-Programms mit aufnehmen. #include übernimmt einen von zwei Parametern: file oder virtual. Dabei akzeptiert file den Namen einer Datei aus dem aktuellen Verzeichnis oder eine absolute Pfadangabe (was man jedoch vermeiden sollte); virtual akzeptiert einen virtuellen Pfad und Dateinamen relativ zu dem Dokumentenwurzelverzeichnis.

Angenommen Sie haben zum Beispiel drei HTML-Dateien: hallo.shtml, gruss.html und adresse.html, und Sie möchten, dass gruss.html und adresse.html in hallo.html aufgenommen werden. Die Dateien befinden sich in dem folgenden virtuellen Verzeichnisbaum (relativ zum Dokumentenwurzelverzeichnis):

/adresse.html
/willkommen/hallo.shtml
/willkommen/gruss.html

Die Datei hallo.html könnte wie folgt aussehen:

<!--#include file="gruss.html" -->
<!--#include virtual="/adresse.html" -->

Um auf adresse.html zuzugreifen, sollten Sie statt file die Option virtual verwenden, da Sie keine andere Möglichkeit haben, den Verzeichnispfad von adresse.html relativ zum aktuellen Verzeichnis willkommen auszudrücken. Sie könnten auch Folgendes eingeben:

<!--#include virtual="/willkommen/gruss.html" -->
<!--#include virtual="/adresse.html" -->

oder

<!--#include virtual="gruss.html" -->
<!--#include virtual="/adresse.html" -->

14.3 Zusammenfassung

Zum Ausklang der zweiten Woche haben wir noch einen kurzen Blick auf erste serverseitige Techniken geworfen. Sie haben erfahren, dass man mit JavaScript auch Programmcode zur Ausführung auf der Serverseite erstellen kann (vorausgesetzt der Webserver unterstützt dies), und Sie haben ein recht einfaches und bequem zu nutzendes Konzept zum serverseitigen Einfügen dynamischer Webinhalte kennen gelernt: die Server Side Includes:

14.4 Fragen und Antworten

Frage:
Es wurde erwähnt, dass der SSI-Befehl #exec, mit dem man CGI-Programme oder sogar Systembefehle ausführen kann, ein Sicherheitsrisiko für den Webserver darstellt. Wieso ist das so?

Antwort:
Nehmen wir an, Sie hätten ein CGI-Programm geschrieben, das ein Gästebuch implementiert (siehe Kapitel 17). Das heißt, in Ihrem Web gibt es eine Webseite mit einem Formular, in das der Besucher seinen Namen und seinen Kommentar für das Gästebuch eingeben kann. Schickt er das Formular ab, werden seine Eingaben an das CGI-Programm übergeben. Dieses öffnet darauf die Webseite mit den Gästebucheinträgen, beispielsweise gaestebuch.html, und hängt den neuen Eintrag als formatierten HTML-Code an das Ende der Datei an.

14.5 Workshop

Der Workshop enthält Quizfragen, die Ihnen helfen sollen, Ihr Wissen zu festigen, und Übungen, die Sie anregen sollen, das eben Gelernte umzusetzen und eigene Erfahrungen zu sammeln. Versuchen Sie, das Quiz und die Übungen zu beantworten und zu verstehen, bevor Sie zur Lektion des nächsten Tages übergehen.

Quiz

  1. Nennen Sie einige bedeutende Programmiersprachen und Technologien zur serverseitigen Unterstützung von Webseiten?
  2. Wie fügt man mit Hilfe von SSI das Datum der letzten Änderung einer bestimmten Datei in eine Webseite auf?
  3. Warum sollte man den Webserver nicht so konfigurieren, dass er alle Webseiten mit der Extension .html nach Server Side Includes durchsucht?

Übungen

  1. Überarbeiten Sie den Code der Webseite lastmodified.shtml aus Listing 14.4 so, dass Sie zur Ausgabe des Datums den SSI-Befehl #flastmod verwenden und das Datum in folgendem Format angezeigt wird:
    Wednesday, der 10.01.01 (10:28:42)



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbackKapitelanfangnächstes Kapitel


© Markt+Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH