Zurück || Weiter Index Startseite

HTML Einführung: Servertags
Server Side Includes - Ein praktisches Hilfsmittel

Verweise

In diesem Kapitel finden Sie Informationen über:

  1. Kopf- und Fußzeilen - #include
  2. Änderungsdatum - #echo, #config
  3. Zugriffszähler - #exec


Allgemeines

Dieses Kapitel beschäftigt sich mit Tags für HTML-Dokumente, deren eigentliche Arbeit durch den HTTP-Server erledigt wird. In den bisherigen Kapiteln wurde erklärt, wie HTML-Dokumente mit Verweisen erstellt werden und wie das Layout/Design der Seiten beeinflusst werden kann. All dieses funktioniert auch lokal auf dem Rechner, den Sie einsetzen. Für den Online-Betrieb bietet HTML aber noch mehr:

  • Wie bereits im letzten Kapitel angedeutet, werden Formulare nicht ausschließlich vom Browser bearbeitet, sondern können mittels action an den Server übergeben werden, dort bearbeitet und ein Ergebnis an den Browser zurückgeschickt werden. Dies werden wir im nächsten Kapitel ein wenig näher beleuchten...
  • Sicher haben Sie auch schon Zugriffszähler ("Sie sind der 104. Besucher auf dieser Seite") gesehen und sich gefragt, wie das funktioniert. Eine einfache Version werden wir im Folgenden kennenlernen.
  • Und dann war da noch "Letzte Änderung des Dokuments am 1.2.1996" oder so ähnlich. - Sie machen das auch? Und wie? Wenn Ihre Antwort jetzt "per Hand" lautet, sollten Sie vielleicht beim Abschnitt Änderungsdatum weiterlesen.
  • Möchten Sie auch einheitliche Fußzeilen bei allen Ihren Dokumenten? Tippen Sie die auch "per Hand" oder kopieren immer den gleichen Text ans Ende jedes Ihrer Dokumente? Eleganter und einfacher, das werden Sie einsehen, geht es sicher mit Includes.
Tags mit diesen Möglichkeiten werden "Server Side Includes" genannt, aus Gründen der Kürze und Einfachheit will ich sie im Folgenden aber einfach Servertags nennen.


Kopf- und Fußzeilen

Die im folgenden beschriebene Methode lässt sich natürlich nicht nur auf Fußzeilen anwenden, sondern generell auf Textblöcke, die in mehr als einem Dokument auftauchen.

Als erstes legen wir einmal eine Datei an, die den Text für unsere Fußzeilen enthält. Dabei können alle bisher vorgestellten HTML-Tags benutzt werden, nicht aber die in diesem Kapitel beschriebenen Servertags, da der HTTP-Server durch Servertags generierte Texte nur in das betreffende Dokument einbindet, aber nicht nochmals auf weitere Servertags hin untersucht. Auch dürfen Sie kein komplettes HTML-Dokument erstellen (d.h. mit den Tags <html>, <head> und/oder <body>). Legen Sie den Text genauso ab, wie er als Teil im komplett zusammengesetzten HTML-Dokument erscheinen soll.

Alle Klarheiten beseitigt? - Dann ist es Zeit für ein Beispiel. Der folgende Code soll das HTML-Dokument sein, wie es beim Browser ankommt. Der Teil unter <hr> soll aus einer Datei footer.shtml stammen. - SHTML steht dabei für "Short HTML" oder "Server included HTML":

<html>
<head>
 <title>Ein einfaches Beispiel</title>
</head>
<body>

Dies ist die einfachste Version eines HTML-Dokumentes. Viel mehr
kann an dieser Stelle nicht demonstriert werden.

<hr>
Diese Seite wurde erstellt von
<a href="http://beam.to/bimbo"><b>Peter Bittner</b></a>.

</body>
</html>

Nun erstellen wir die Datei footer.shtml mit folgendem Inhalt:

<hr>
Diese Seite wurde erstellt von
<a href="http://beam.to/bimbo"><b>Peter Bittner</b></a>.

Und jetzt setzen wir unser Includetag im Orginaldokument (von oben) ein. Dieses Tag sieht wie folgt aus:
<!--#include file="Dateiname"-->

Bitte schreiben Sie das Includetag genauso, wie hier angegeben! Fügen Sie keinesfalls Leerzeichen ein oder entfernen Sie die "-" Zeichen. Viele HTTP-Server mögen so etwas gar nicht und Sie bekommen dann Ihre Fußzeile nicht eingebunden. - Den Dateinamen können Sie aber freilich beliebig wählen.

<html>
<head>
 <title>Ein einfaches Beispiel</title>
</head>
<body>

Dies ist die einfachste Version eines HTML-Dokumentes. Viel mehr
kann an dieser Stelle nicht demonstriert werden.

<!--#include file="footer.shtml"-->
</body>
</html>


Änderungsdatum

Servertags bieten auch die Möglichkeit, automatisch das letzte Änderungsdatum der Datei ausgeben zu lassen. Dies geschieht auf einfache Weise durch das folgende Tag:

<!--#echo var="Variable"-->
Folgendes können Sie anstelle von Variable einsetzen:

Variablenangaben für Servertags
Variable Bedeutung
 DOCUMENT_NAME  Dateiname des aktuellen Dokumentes
 DATE_LOCAL  Ortszeit und aktuelles Datum (zum Ladezeitpunkt des Dokumentes)
 LAST_MODIFIED  Letzte Änderung des aktuellen Dokumentes

Nun das klappt sicher sehr gut, allerdings haben sie jetzt wahrscheinlich ein englisches Datumsformat, evtl. sogar mit englischen Monatsbezeichnungen usw.

Aber das muss nicht sein! Mit dem Config-Tag können wir das Format für Datum und Zeit manipulieren:

<!--#config timefmt="Format"-->
Format ist dabei identisch mit den Formatierungsoptionen der C-Funktion strftime(), die ähnlich dem Formatstring von printf() arbeitet. Sie können einen String aus den folgenden Optionen zusammen-setzen, dabei darf auch normaler Text eingefügt werden:

Auszug aus den Zeitformat-Optionen
Option Bedeutung
%H  Die Stunde - von 0 bis 23
%M  Die Minute
%d  Der Tag des Monats
%m  Der Monat - von 01 bis 12
%Y  Jahr mit Jahrhundert, z.B. 1999
%y  Jahr ohne Jahrhundert, z.B. 99

Wenn wir also die Ausgabe des Modifkationsdatums im Format "18.02.1999 um 14:45" haben wollen, müssen die zwei Servertags so aussehen:

<!--#config timefmt="%d.%m.%Y um %H:%M"-->
<!--#echo var="LAST_MODIFIED"-->

Und vergessen Sie nicht, das Config-Tag vor dem Echo-Tag einzusetzen, sonst hat es nicht die gewünschte Wirkung!


Zugriffszähler

ACHTUNG!  Die folgenden Tips gelten nur dann, wenn Sie Zugriff auf das "cgi-bin" Verzeichnis des Servers haben und sie auf Netscape ausgelegt sind. Klären Sie das im Zweifelsfalle mit Ihrem Webmaster bzw. Provider ab.

Jeder Server führt eine Zugriffsdatei in der die Zugriffe auf Web-Pages protokolliert werden. Jede Zeile in dieser Datei repräsentiert einen Zugriff und sieht etwa so aus:

   oeh.tu-graz.ac.at - - 12.01.1999 19:14 +0000 "GET institute.html HTTP 1.0" 200 2323
   oeh.tu-graz.ac.at - - 12.01.1999 19:15 +0000 "GET startlogo.gif HTTP 1.0" 200 12333

Zu Beginn steht der zugreifende Rechner, dann Zugriffsdatum und -zeit und schließlich die Methode "GET" gefolgt von dem, was der Browser vom HTTP-Server angefordert hat. Heisst das geladene Dokument "welcome.html" oder "index.html", so wird dies gegen ein "/" im "GET" ausgetauscht. Haben Sie einen anderen HTTP-Server im Einsatz, kann das bei Ihnen ganz anders aussehen. Auch ist das obige Format nicht ganz orginalgetreu, aber als Näherung soll es uns hier reichen.

Mit folgendem (bewusst einfach gehaltenen, z.B. ohne Sicherheitsabfragen) Shellskript können Sie das Vorkommen des gesuchten Dokumentes in der Zugriffsdatei ermitteln:

#!/bin/ksh
#
# Aufruf: such HTML-Datei
#
# Die Zugriffsdatei mit vollem Pfad (Tragen Sie Ihren Pfad ein!)
#
zugriff=/var/nethttp/logs/access
#
# Das Dokument welches gesucht wird: (1. Parameter)
#
such=$1
#
# Der Suchstring
#
finde="GET $such HTTP"
#
# Suchen und zaehlen...
#
anzahl=`grep $such $zugriff &brcbar wc -l`
#
# Auf die Standardausgabe damit ...
#
echo $anzahl

Dieses Skript legen Sie nun in das "cgi-bin" Verzeichnis unter dem Namen gtcount.ksh ab.
Jetzt müssen Sie es nur noch von Ihrem Dokument aus aufrufen. Die Ausgabe des Skriptes (die Nummer des Zugriffes also) wird automatisch an die Stelle des nun folgenden Tags gesetzt:

<!--#exec cmd="/var/cgi-bin/gtcount.ksh welcome.html"-->

Setzen Sie dieses HTML-Tag dort in Ihrem Dokument ein, wo die Nummer des Zugriffes aufscheinen soll. Alle Ausgaben des Skriptes werden in die Seite eingebunden, die zum Browser geschickt wird. Dazu gehören allerdings auch Fehlermeldungen des Skriptes, die hier überhaupt nicht berücksichtigt wurden!

Korrigieren Sie im Tag bei Bedarf den Pfad des "cgi-bin" Verzeichnisses. Als Parameter geben Sie immer den Namen des gesuchten Dokumentes an. Dabei gilt:

  • Liegt das Dokument nicht im root (dem obersten Verzeichnis, auf das der HTTP-Server zugreifen darf), so geben Sie den relativen Pfad mit an!
  • Lautet das Dokument "welcome.html" oder "index.html", so streichen Sie den Namen und suchen Sie nach "/" (im Unterverzeichnis "subdir" von root nach "/subdir/")!


Zusammenfassung und Beispiel

Das war's mit Server Side Includes. Zum Festigen dieser Materie empfehle ich Ihnen, die besprochenen Beispiele einmal praktisch zu testen. - Viel Glück!

Weiter geht es im nächsten Kapitel mit Formularen auf der Serverseite.

 


Zurück || Weiter Index Startseite
Version 1.2, Jänner 2000 - Copyright © 1999-2000 by Peter Bittner