HTX
|
Server Side Hypertext Extension
Version 1.02
|
|
HTX ist eine serverseitige Erweiterung des HTML-Sprachumfangs, und führt den Gedanken der
Server Side Includes (SSI) konsequent weiter. Serverseitig bedeutet,
daß HTX-Befehle browserunabhängig bereits auf dem Server ausgeführt werden, bevor das
angeforderte Dokument zum Browser übertragen wird. HTX versteht sich nicht als Ersatz für
vollwertige CGI-Sprachen wie Perl oder PHP. HTX soll hingegen einfache Lösungen für
häufige Probleme bieten, die sonst nur mit CGI-Programmen gelöst werden könnten. Das
Einbinden von Text-Countern, die Überprüfung von Formularen, das Importieren von Dokumenten,
einfache Datenbankfunktionen oder das Versenden von E-Mails sind hier
nur einige Anwendungen.
HTX-Tags können Sie einfach zusätzlich in normalen HTML-Dokumenten verwenden.
Damit der Server weiß, daß es sich um Dokumente handelt, die HTX-Tags enthalten,
verwenden Sie für diese Dokumente die Extension .htx. Also z.B. hauptseite.htx
oder index.htx.
Wenn Sie ein HTX-Dokument mit einem Fragestring aufrufen finden Sie diesen in der Variablen
<VAR QUERY_STRING>. Zusätzlich können Sie die einzelnen Werte auch mit dem VAR-Befehl abrufen.
hauptseite.htx?sprache=Deutsch
liefert in <VAR QUERY_STRING> den Wert sprache=Deutsch
und über <VAR sprache> den Wert Deutsch
Auch wenn Sie ein HTX-Dokument über ein Formular ( <FORM> ) aufrufen, finden Sie den
übermittelten Inhalt der Felder jeweils mit <VAR feldname>. Bei Formularen werden die Methoden GET und POST unterstützt.
|
Übersicht
CALC
COUNTER
ENDIF
ELSE
EXIT
DBDELETE
DBEND
DBREAD
DBWRITE
GET FILE
GET HTTP
IF
LEN
LET
SENDMAIL
STRSPLIT
STRRMV
VAR
WEND
WHILE
Reservierte Variablen
|
HTX-Befehle stehen immer in einer eigenen Zeile und werden in der für HTML üblichen
Form <Befehl> angegeben.
Die HTX-Variablen <VAR name>, <COUNTER name> und <LEN string> können frei mit HTML-Code oder HTX-Befehlen, auch in der selben Zeile,
gemischt werden.
|
Übersicht der HTX-Befehle
|
<CALC Variable = Formel>
Der Befehl CALC gibt der Variablen den Wert der Berechnung der Formel.
Die Formel kann HTX-Variablen und Zahlen und die Grundrechenarten (+,-,*,/) enthalten.
Das Beispiel gibt mit dem Befehl <VAR resultat> den Wert der Berechnung aus:
<CALC resultat=5*5>
<CALC resultat=resultat/2>
<VAR resultat>
<COUNTER countername>
Der Befehl COUNTER zeigt den Wert des Counters countername an, und erhöht
diesen um 1.
Den Namen (immer in Kleinbuchstaben) können Sie frei wählen, und so beliebig
viele Counter installieren. Der aktuelle Wert des jeweiligen
Couters wird in Ihrem Datenverzeichnis /data in einer ASCII-Datei mit dem
Namen countername.count gespeichert.
<DBDELETE "datei" "feldinhalt_1|feldinhalt_2|...|feldinhalt_n">
Der Befehl DBDELET löscht aus der Datenbank datei den Datensatz
feldinhalt_1|feldinhalt_2|...|feldinhalt_n.
Folgendes Beispiel löscht den Kunden "Martin Meier" aus der Datenbank:
<DBDELETE "kunden" "Herr|Martin|Meier">
<DBREAD "datei" "feldname_1|feldname_2|...|feldname_n">
HTML- und HTX-Tags
<DBEND>
Der Befehl DBREAD öffnet die Datenbank datei, und führt für alle Datensätze
jeweils den durch das DBREAD / DBEND Paar eingeschlossenen Code aus HTML- und HTX-Tags aus.
Die Feldeinträge des jeweiligen Datensatzes befinden sich in den Variablen
feldname_1 bis feldname_n.
Die Definition der Feldnamen wird in der gleichen Form angegeben wie die Datensätze selbst,
also jeweils getrennt durch den Feldtrenner. Dieser Feldtrenner ist ein vordefiniertes
Zeichen, das die einzelnen Felder voneinander trennt. Voreingestellt ist hier das Zeichen |
(auf der PC-Tastatur über Alt-Gr-< erreichbar).
Der DBREAD-Befehl darf nicht geschachtelt werden.
<DBWRITE "datei" "feldinhalt_1|feldinhalt_2|...|feldinhalt_n">
Der Befehl DBWRITE erzeugt in der Datenbank datei den Datensatz
feldinhalt_1|feldinhalt_2|...|feldinhalt_n. Wenn die Datenbank datei
noch nicht existiert, wird diese in Ihrem /data-Verzeichnis erzeugt.
Folgendes Beispiel erzeugt eine Datenbank mit vier einträgen, und gibt diese dann aus:
<DBWRITE "kunden" "Herr|Martin|Meier">
<DBWRITE "kunden" "Frau|Sonja|Schmidt">
<DBWRITE "kunden" "Frau|Angela|Berger">
<DBWRITE "kunden" "Herr|Jochen|Peters">
<DBREAD "kunden" "anrede|vorname|name">
Datensatz Nummer <VAR DB_RECORDNUMBER>:
<VAR anrede> <VAR vorname> <VAR name><BR>
<DBEND>
Zusätzlich wird hier die Sondervariable DB_RECORDNUMBER verwendet, die die laufende Nummer
des aktuellen Datensatzes enthält.
Das nachfolgende Beispiel öffnet die eben erzeugte Datenbank "kunden",
und gibt alle weiblichen Kunden aus:
<DBREAD "kunden" "anrede|vorname|name">
<IF "<VAR anrede>" EQ "Frau">
Datensatz Nummer <VAR DB_RECORDNUMBER>:
<VAR anrede> <VAR vorname> <VAR name><BR>
<ENDIF>
<DBEND>
<EXIT>
<GET FILE "Datei">
Mit dem Befehl GET FILE können Sie eine Datei in das aktuelle HTX-Dokument
einbinden. Mit diesem Befehl haben Sie Zugriff auf alle Dateien in Ihrem /htdocs-Verzeichnis.
Die importierte Datei befindet sich dann in der Variablen <VAR FILE>.
Folgendes Beispiel importiert Ihre Index-Datei:
<GET FILE "index.htm">
<VAR FILE>
Eine häufige Anwendung ist das Verwenden von Header- und Footer-Dateien zur
Vereinheitlichung von Webseiten.
<GET HTTP "http://adresse/dokument...">
Mit dem Befehl GET HTTP können Sie ein Dokument von einem Server
in das aktuelle HTX-Dokument einbinden.
Eine häufige Anwendung ist das Aufrufen von CGI-Scripten (auch vom eigenen Server).
Das importierte Dokument befindet sich dann in der Variablen <VAR HTTP>.
Der Server wird mit der Methode GET gerufen.
Folgendes Beispiel importiert das Ergebnis einer DE-NIC-Whois-Anfrage:
<LET domain = "ibm.de">
<GET HTTP "http://www.nic.de/cgi-bin/domainreg?domain=<VAR domain>">
<VAR HTTP>
Sie können das empfangene Dokument auch mit dem IF-Befehl überprüfen, und eine
inhaltsabhängige Ausgabe erzeugen, ohne das Dokument selbst anzuzeigen.
Dieses Beispiel überprüft das Ergebnis der DE-NIC-Whois-Anfrage:
<IF "ist noch frei" CIN "<VAR HTTP>">
Die Domain ist noch frei!<BR>
<ELSE>
Die Domain ist leider schon vergeben!<BR>
<ENDIF>
<IF "Parameter1" Operator "Parameter2">
HTML-Code
<ELSE>
HTML-Code
<ENDIF>
Der IF-Befehl überprüft Parameter1 und Parameter2 mit dem Operator
Folgende Operatoren stehen zur Verfügung:
EQ gleich
NE ungleich
GT größer als
GE größer gleich
LT kleiner als
LE kleiner gleich
IN Parameter2 enthält den String Parameter1
NOTIN Parameter2 enthält den String Parameter1 nicht
CIN Parameter2 enthält den String Parameter1
Groß- und Kleinschreibung wird ignoriert.
NOTCIN Parameter2 enthält den String Parameter1 nicht
Groß- und Kleinschreibung wird ignoriert.
Die Parameter müssen in Anführungszeichen stehen.
Der ELSE-Tag ist optional.
<LEN Variable>
<LET Variable = "Parameter">
Der Befehl LET gibt der Variable Variable den Wert "Parameter".
Parameter muß in Anführungszeichen stehen.
Bei Variablen wird zw. Groß- und Kleinschreibung
unterschieden.
<SENDMAIL>
To: Email-Adresse des Empfängers
From: Email-Adresse des Absenders
Subject: Betreffszeile
Die eigentliche Nachricht
</SENDMAIL>
Der SENDMAIL-Befehl sendet eine Nachricht an die Email-Adresse des Empfängers.
Als Absender wird die Email-Adresse des Absenders angegeben, als Betreff die unter
Subject angegebene Betreffszeile.
Das Mail-Protokoll schreibt vor, daß der Mail-Header (die Zeilen To:, From:, Subject: etc.) von der eigentlichen Nachricht mit einer Leerzeile getrennt sein muß.
<STRSPLIT string "trenner" teil1 teil2>
Der Befehl STRSPLIT trennt den String string beim ersten Vorkommen der
Zeichenfolge trenner in den vorderen Teil
teil1 und den hinteren Teil teil2.
Der Inhalt der Variablen string wird dabei nicht verändert.
<STRRMV String "Zeichenfolge">
Der Befehl STRRMV entfernt die Zeichenfolge aus der Variablen String.
Dieses Beispiel entfernt das "www." aus einem Domainnamen:
<LET domain = "www.ihrname.com">
<STRRMV domain "www.">
<VAR Variable>
<WHILE Variable>
...
...
<WEND>
Mit der WHILE / WEND Kombination wird der durch diese Befehle eingeschlossene
Bereich solange ausgeführt, wie Variable wahr, also ungleich Null, ist.
Folgendes Beispiel gibt die Zahlen 1-10 aus:
<LET A= "10">
<WHILE A>
<CALC B=11-A>
<CALC A=A-1>
<VAR B><BR>
<WEND>
Der WHILE-Befehl darf nicht geschachtelt werden.
Import:
FILE - Enthält die zuletzt importierte Datei
HTTP - Enthält das zuletzt importierte HTTP-Dokument
Zeit / Datum:
TM_SEC - Sekunden der aktuellen Zeit
TM_MIN - Minuten der aktuellen Zeit
TM_HOUR - Stunden der aktuellen Zeit
TM_DAY - Tag des aktuellen Datums
TM_HOUR - Stunden der aktuellen Zeit
TM_MON - Monat des aktuellen Datums
TM_HOUR - Stunden der aktuellen Zeit
TM_YEAR - Jahr des aktuellen Datums
TM_WDAY - Wochentag aktuellen Datums (1=Montag,7=Sonntag)
Umgebungsvariablen:
(Z.T. sind, abhängig vom Status des Dokuments, zusätzliche Umgebungsvariablen verfügbar)
SERVER_SOFTWARE
Der Name und die Version des Informationsservers, der die
Anforderung beantwortet (und der das Gateway ausführt).
Format: name/version
SERVER_NAME
Der Hostname des Servers, der DNS Alias oder die IP-Adresse,
wie sie in selbstreferenzierenden URL's vorkämen.
GATEWAY_INTERFACE
Die Ausgabe der CGI Spezifikation, zu der der Server
konform ist.
Format: CGI/revision
SERVER_PROTOCOL
Der Name und der Stand des Informationsprotokolls, in der
die Anforderung gestellt wurde.
Format: protocol/revision
SERVER_PORT
Die Portnummer an die die Anforderung gesendet wurde.
REQUEST_METHOD
Die Methode, mit der die Anforderung gestellt wurde.
Für HTTP sind dies
"GET", "HEAD", "POST", usw.
HTTP_ACCEPT
Die MIME Typen, die der Klient akzeptiert, so wie sie im
HTTP Header enthalten waren.
Andere Protokolle könnten diese Informationen auch aus
anderer Quelle erhalten.
Jeder Bestandteil der Liste sollte laut HTTP Spezifikation
durch Komma getrennt sein.
Format: type/subtype, type/subtype
PATH_INFO
Eine zusätzliche vom Klienten gelieferte Pfadinformation,
d.h. Skripte sind über virtuelle Pfadnamen, die von
Zusatzinformationen am Ende des Pfades gefolgt werden können,
aufrufbar. Die Zusatzinformation wird als PATH_INFO übergeben.
Diese Information sollte zuvor vom Server dekodiert werden.
PATH_TRANSLATED
Der Server bietet noch eine übersetzte Version von
PATH_INFO, die auf den Pfad eine Abbildung von
virtuellen auf physischen Namen vornehmen kann.
SCRIPT_NAME
Ein virtueller Pfad des auszuführenden Skripts, der
für selbst refenzierende URL's benutzt werden kann.
QUERY_STRING
Die Information, die einem ? in einem URL,
der das Skript referenziert, folgt.
Man nennt sie die Query-Information.
Sie sollte in keiner Weise dekodiert werden.
Die Variable sollte immer gesetzt sein, falls eine Query-Information
vorhanden ist, unabhängig von der Kommandozeilendekodierung.
REMOTE_HOST
Der Hostname des Rechners, der die Anforderung gestellt hat.
Falls der Server diese Information nicht hat, so sollte
REMOTE_ADDR gesetzt sein und die Variable nicht.
REMOTE_ADDR
Die IP-Adresse des Rechners, der die Anforderung gestellt hat.
AUTH_TYPE
Falls der Server Nutzer-Authentifizierung unterstützt und
das Skript einem Schutz unterliegt, so wird die
protokollspezifische Authentifizierungsmethode zur
Validierung des Nutzers verwendet.
REMOTE_USER
Falls der Server Nutzer-Authentifizierung unterstützt und
das Skript einem Schutz unterliegt, so wird hiermit der
Nutzername übergeben, der authentifiziert wurde.
REMOTE_IDENT
Falls der Server RFC 931 Identifikation unterstützt, dann
wird diese Variable auf den Namen des Nutzers, wie er vom
Server übermittelt wurde, gesetzt.
Die Benutzung dieser Variablen sollte auf die Protokollierung
begrenzt sein.
CONTENT_TYPE
Für Anforderungen, an die Informationen gebunden sind, so
wie bei HTTP POST und PUT, ist hier der Typ der Daten
enthalten.
CONTENT_LENGTH
Dies ist die Länge der eben genannten Daten, die vom
Klienten übergeben werden.
Sonstige:
HTX_VERSION - Die HTX-Versionsnummer
DB_SEPERATOR
Diese Variable enthält den Feldtrenner für die Datenbankfunktionen.
Voreingestellt ist hier das Zeichen |
Wenn Sie einen anderen Feldtrennen verwenden möchten, kann dieser mit dieser
Variablen definiert werden.
DB_RECORDNUMBER
Diese Variable enthält die laufende Nummer des aktuellen Datensatzes.
Folgendes Beispiel gibt das aktuelle Datum aus:
Es ist
<IF "<VAR TM_WDAY>" EQ "0">Sonntag,<ENDIF>
<IF "<VAR TM_WDAY>" EQ "1">Montag,<ENDIF>
<IF "<VAR TM_WDAY>" EQ "2">Dienstag,<ENDIF>
<IF "<VAR TM_WDAY>" EQ "3">Mittwoch,<ENDIF>
<IF "<VAR TM_WDAY>" EQ "4">Donnerstag,<ENDIF>
<IF "<VAR TM_WDAY>" EQ "5">Freitag,<ENDIF>
<IF "<VAR TM_WDAY>" EQ "6">Samstag,<ENDIF>
der <VAR TM_DAY>.<VAR TM_MON>.19<VAR TM_YEAR>
|
| |
© 1998-2007 Gold Vision Communications All Rights Reserved.
|