KAPITEL 8
Veröffentlichen von Informationen und Anwendungen
Mit Internet Information Server lassen sich sowohl Informationen als auch Anwendungen veröffentlichen. Das heißt, daß Ihre Web Site vielfältige Objekte, angefangen von statischen Seiten bis hin zu interaktiven Anwendungen, enthalten kann. Sie haben auch die Möglichkeit, Informationen in Datenbanken abzufragen und aus diesen zu extrahieren oder in Datenbanken einzufügen.
In diesem Kapitel werden folgende Vorgänge erläutert:
Der HTML-Editor oder ein anderes System werden zum Erstellen von HTML-Dateien verwendet, die Hypertext-Verknüpfungen zu anderen Dateien auf dem Computer enthalten können. Wenn Sie Bilder oder Klänge integrieren möchten, benötigen Sie außerdem die zum Erstellen und Bearbeiten dieser Dateien geeignete Software.
Nach dem Erstellen von Informationen in HTML oder anderen Formaten können Sie diese Informationen entweder in das Standardverzeichnis InetPub\Wwwroot kopieren oder als Standard-Basisverzeichnis das Verzeichnis wählen, in dem die Informationen enthalten sind.
Starten Sie zum Konfigurieren zusätzlicher MIME-Zuordnungen den Registrierungseditor (Regedt32.exe), und öffnen Sie den Schlüssel:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters\MimeMap.
Fügen Sie den für den Computer erforderlichen REG_SZ-Wert für die MIME-Zuordnung in folgender Syntax hinzu:
<mime-typ>,<dateinamenerweiterung>,<freier parameter>,<gopher-typ>
Beispiel:
text/html,htm,/unused,1
image/jpeg,jpeg,/unused,5
Die mit dem Wert verknüpfte Zeichenfolge (der Wertinhalt) sollte leer bleiben. Der Standardeintrag mit einem Sternchen (*) als Dateinamenerweiterung wird als Standard-MIME-Typ verwendet, wenn keine MIME-Zuordnung vorhanden ist. Wenn z. B. eine Anforderung für die Datei Current.vgr verarbeitet werden soll und die Dateinamenerweiterung .vgr keinem MIME-Typ zugeordnet ist, verwendet der Computer den für die Erweiterung * festgelegten MIME-Typ. Dabei handelt es sich um den für Binärdaten verwendeten Typ. Gewöhnlich bewirkt dies, daß Browser die Datei auf der Festplatte speichern.
Die Include-Anweisung muß folgendes Format aufweisen:
<!--#include file="Wert"-->
Als Wert kann ein relativer oder ein vollständiger Pfad, ausgehend vom Basisverzeichnis des WWW-Dienstes, angegeben werden.
Wenn Sie z. B. eine Verknüpfung zu Ihrer Homepage in jedes HTML-Dokument einfügen möchten, gehen Sie wie folgt vor:
<A HREF="/homepage.htm"><IMG SRC="/images/button_h.gif"></A>
Die Verwendung von .stm-Dateien kann die Systemleistung beeinträchtigen. Daher sollten Sie diese Erweiterung möglichst vermeiden.
Sie können jederzeit zu: <!--#include file="/linkhome.htm"--> zurückkehren
Beachten Sie, daß sich alle Pfade auf das WWW-Basisverzeichnis beziehen und virtuelle Verzeichnisse enthalten können.
Anwendungen, die über ISAPI erstellt werden, werden als DLLs (Dynamic-Link Libraries) kompiliert, die vom WWW-Dienst beim Start geladen werden. Da es sich bei ISAPI-Programmen um speicherresidente Programme handelt, sind diese deutlich schneller als nach der CGI-Spezifikation entwickelte Anwendungen.
Mit Hilfe der ISAPI lassen sich Anwendungen erstellen, die als DLLs auf dem Web Server ausgeführt werden. Wenn Sie zuvor bereits mit CGI (Common Gateway Interface)-Skripten gearbeitet haben, werden Sie feststellen, daß die ISAPI-Anwendungen wesentlich leistungsfähiger sind, da sie zur Laufzeit des Servers in den Speicher geladen werden. Sie erfordern weniger Overhead, da die einzelnen Anforderungen keine separaten Prozesse starten.
Eine weitere ISAPI-Funktion ermöglicht sowohl die Vorverarbeitung von Anforderungen als auch die Nachbearbeitung von Rückmeldungen und somit die Web Site-spezifische Verarbeitung von HTTP (HyperText Transport Protocol)-Anforderungen und -Rückmeldungen. ISAPI-Filter können für Anwendungen, wie die benutzerdefinierte Echtheitsbestätigung, Zugriffsberechtigungen und Protokollierung, verwendet werden.
Durch die gleichzeitige Verwendung von ISAPI-Filtern und -Anwendungen ist das Einrichten äußerst komplexer Web Sites möglich. ISAPI-Erweiterungen können ferner in Verbindung mit dem Internet-Datenbank-Connector für das Erstellen von Web Sites mit ausgeprägter Interaktivität verwendet werden.
Ausführliche Informationen über das Programmieren mit ISAPI finden Sie in dem im MSDN erhältlichen Microsoft Win32 BackOffice Software Development Kit (SDK). Weitere Bestellinformationen zum ISAPI SDK finden Sie im einleitenden Kapitel Bevor Sie beginnen.
Die meisten 32Bit-Anwendungen von Windows NT, die den CGI-Spezifikationen entsprechen, eignen sich für Microsoft Internet Information Server.
Die folgende Abbildung verdeutlicht den Informationsaustausch über CGI zwischen einem Browser, einem Server und einer CGI-Anwendung. Der Vorgang umfaßt fünf Schritte, die im Rest dieses Abschnitts erläutert werden.
GET
POST
Der Client löst einen CGI-Prozeß aus, indem er in einer HTML-Seite auf eines der folgenden Elemente klickt:
.pl: REG_SZ: C:\RESKIT\PERL\BIN\PERL.EXE %s %s
Dabei gilt:
2. Auf die Server-Direktiven folgt eine Leerzeile.
3. Nach der Leerzeile folgen die von der Anwendung an den Client zurückgegebenen Daten.
Weitere Informationen über CGI finden Sie in den CGI-Spezifikationen unter http://hoohoo.ncsa.uiuc.edu/cgi/.
Es ist dringend zu empfehlen, die Skriptzuordnung zu konfigurieren. Durch die Skriptzuordnung wird sichergestellt, daß der richtige Interpreter (z. B. Cmd.exe) gestartet wird, wenn ein Client eine ausführbare Datei anfordert.
Für WWW-Informationsverzeichnisse sollte nur die Leseberechtigung erteilt werden. Für alle ausführbaren Dateien, die zum Herunterladen von NTFS (Windows NT File System)-Laufwerken bereitgestellt werden, sollte nur der Lesezugriff aktiviert sein.
Es ist möglich, Stapelverarbeitungsdateien als CGI-Programme auszuführen; Sie sollten dabei jedoch äußerste Vorsicht walten lassen, um Sicherheitsrisiken für den Server auszuschließen.
Anmerkung Ausführbare CGI-Dateien können auch die Dateinamenerweiterung .exe oder .cgi aufweisen.
Beispielsweise können Sie den IDC sichern, ohne Berechtigungen für die .idc-Datei zu vergeben, indem Sie den geeigneten Benutzern die NTFS-Ausführungsberechtigung für Inetsrv\Httpodbc.dll erteilen. Httpodbc.dll ist der Name der ISAPI-Anwendungs-DLL, die den IDC implementiert. Versucht nun ein Benutzer, den IDC auszuführen, werden vom Server die Berechtigungen überprüft. Nur wenn dem Benutzer die Ausführungsberechtigung erteilt wurde, erhält der Benutzer Zugriff.
Anmerkung Nach dem Laden einer ISAPI-Anwendung bleibt diese geladen, bis der WWW-Dienst beendet wird. Änderungen an den Sicherheitsbeschreibungen nach dem Laden der ISAPI-Anwendung werden von Internet Information Server nicht verfolgt. Wenn Sie nach dem Laden einer ISAPI-Anwendung deren Berechtigungen ändern, müssen Sie den WWW-Dienst beenden und erneut starten, um die Änderung in Kraft zu setzen.
Verwenden Sie besondere Sorgfalt auf das Erstellen von Zugangskontrollisten (Access Control Lists, ACLs) für das Verzeichnis Winnt und seine Unterverzeichnisse. Einige ISAPI-Anwendungen und Datenbanken benötigen Zugriff auf Dateien und DLLs in diesen Verzeichnissen.
Anmerkung ISAPI-Anwendungs-DLLs können die Dateinamenerweiterung .dll oder .isa aufweisen.
Stellen Sie sicher, daß alle von der Anwendung gestarteten Prozesse über ein Konto mit geeigneten Berechtigungen ausgeführt werden. Falls die Anwendung andere Dateien verwendet, muß das dem Programm zugewiesene Konto über die entsprechenden Berechtigungen für diese Dateien verfügen. Standardmäßig werden Anwendungen über das Konto IUSR_Computer_Name ausgeführt, das Administratorrechte und Ausführungsberechtigung für die Anwendungsdateien besitzen muß.
Eine HTML-Verknüpfung zu einer Anwendung, für die keine Benutzereingaben erforderlich sind, könnte beispielsweise wie folgt lauten:
http://www.firma.de/scripts/Katalog.exe
Scripts stellt hierbei das virtuelle Verzeichnis für interaktive Anwendungen dar.
Wenn Sie eine Anwendung erstellt haben, die Benutzereingaben erfordert, sollten Sie sowohl mit der Erstellung von HTML-Formularen als auch mit der Verwendung dieser Formulare mit ISAPI oder CGI vertraut sein. Ausführliche Informationen zu diesen Themen finden Sie im Internet oder in anderen Informationsquellen.
Erweiterung | Standard-Interpreter |
.bat, .cmd | Cmd.exe |
.idc | Httpodbc.dll |
.exe, .com | System |
Zum einen werden Ihre Anwendungen in dem virtuellen Verzeichnis Scripts gespeichert, das ausdrücklich als Anwendungsverzeichnis gekennzeichnet ist. Nur der Administrator kann einem als Anwendungsverzeichnis gekennzeichneten Verzeichnis Programme hinzufügen. Daher haben Unbefugte nicht die Möglichkeit, ohne Administratorrechte unerwünschte Anwendungen zu kopieren und diese auf Ihrem Computer auszuführen.
Es ist ratsam, dem Konto IUSR_Computer_Name die Berechtigungen Lesen und Ausführen für das mit dem virtuellen Ordner verknüpfte Verzeichnis zu erteilen und nur dem Administrator Vollzugriff zu gewähren. Perl-Skripten (Erweiterung .pl) und IDC-Dateien (Erweiterung .idc oder .htx) benötigen die Berechtigungen Lesen und Ausführen. Erteilen Sie keine Schreibberechtigung, um zu verhindern, daß die Sicherheit gefährdende Dateien auf Ihrem Server installiert werden.
Zum anderen werden alle Anforderungen von Remote-Benutzern über das Konto IUSR_Computer_Name verarbeitet, wenn Sie den WWW-Dienst so konfiguriert haben, daß nur anonyme Anmeldungen zulässig sind. Standardmäßig besteht im NTFS (Windows NT File System) nicht die Möglichkeit, über das Konto IUSR_Computer_Name Dateien zu löschen oder zu ändern, es sei denn, der Administrator vergibt entsprechende Zugriffsberechtigungen. Daher könnten unerwünschte Programme, selbst wenn diese auf den Computer kopiert würden, die Informationen nicht gravierend beschädigen, da auf den Computer und die darauf enthaltenen Dateien mit den eingeschränkten Berechtigungen des Kontos IUSR_Computer_Name zugegriffen wird.
Web Browser (z. B. der Internet Explorer oder von anderen Firmen wie Netscape entwickelte Browser) übermitteln Anforderungen an den Internet-Server über HTTP. Der Internet-Server sendet als Rückmeldung ein in HTML formatiertes Dokument. Der Zugriff auf Datenbanken erfolgt über eine Komponente von Internet Information Server mit dem Namen IDC (Internet-Datenbank-Connector). Der Internet-Datenbank-Connector, Httpodbc.dll, ist eine ISAPI DLL, die über ODBC auf Datenbanken zugreift.
Die folgende Abbildung zeigt die für den Datenbankzugriff über Internet Information Server notwendigen Komponenten.
Der IDC verwendet zweierlei Dateien für die Steuerung des Datenbankzugriffs und die Generierung einer Web-Seite als Ausgabe. Bei diesen Dateien handelt es sich um Dateien mit den Erweiterungen .idc (Internet Database Connector) und .htx (HTML Extension).
Die Internet-Datenbank-Connector-Dateien enthalten die Informationen, die zum Herstellen einer Verbindung zur entsprechenden ODBC-Datenquelle und zum Ausführen der SQL-Anweisung erforderlich sind. Darüber hinaus enthält eine Internet-Datenbank-Connector-Datei auch den Namen und den Pfad für die Datei mit der HTML-Erweiterung.
Die Datei mit der HTML-Erweiterung dient als Vorlage für das eigentliche HTML-Dokument, das nach dem Einfügen der Datenbankinformationen durch den IDC an den Web Browser zurückgesendet wird.
Systemdatenquellen wurden erstmalig in der ODBC-Version 2.5 eingesetzt. Sie ermöglichen Windows NT-Diensten die Verwendung von ODBC.
2. Klicken Sie auf OK.
3. Klicken Sie auf die Schaltfläche Hinzufügen/Entfernen.
4. Klicken Sie auf OK.
5. Klicken Sie auf die Option ODBC-Treiber und -Verwaltungsprogramme.
6. Klicken Sie auf OK.
7. Das Dialogfeld Treiber installieren wird angezeigt.
8. Um den SQL Server-Treiber zu installieren, klicken Sie im Listenfeld Verfügbare ODBC-Treiber auf SQL Server und dann auf OK.
2. Doppelklicken Sie auf das Symbol ODBC.
Unter Umständen werden in der Liste weitere Datenquellen angezeigt, wenn Sie zuvor bereits andere ODBC-Treiber installiert haben.
6. Geben Sie den Namen der Datenquelle ein.
Im Fall von Microsoft SQL Server sind der im Setup-Dialogfeld angezeigte Server-Name, die Netzwerkadresse und die Netzwerkbibliothek installationsabhängig. Wenn Sie nicht wissen, welche Einträge Sie in den entsprechenden Feldern vornehmen sollen, übernehmen Sie die Standardwerte. Weitere Informationen erhalten Sie, indem Sie auf die Schaltfläche Hilfe klicken und den Abschnitt lesen, der eine Beschreibung für das von Ihnen eingesetzte Netzwerk enthält.
9. Klicken Sie auf Schließen, um das Dialogfeld Datenquellen zu schließen.
10. Klicken Sie auf OK, um das ODBC- und DSN-Setup zu beenden.
Die folgende Abbildung zeigt die Datei Dbsamp1.htm in der Form, wie sie vom Microsoft Internet Explorer angezeigt wird. (Dabei wird vorausgesetzt, daß Internet Information Server auf einem Computer mit dem Namen Web Server installiert wurde.)
Wird auf den Hyperlink Klicken Sie hier, um die Abfrage zu starten geklickt, wird ein weiterer URL (Uniform Resource Locator) an den Server gesendet. Der URL wird dem Hyperlink-Text vorangestellt (formatiert als versteckter Text):
<A HREF="http://webserver/samples/dbsamp/dbsamp1.idc">Klicken Sie hier, um die Abfrage zu starten</A>
Der URL verweist auf die Internet-Datenbank-Connector-Datei, die der IDC verwenden soll (Dbsamp1.idc). Die Dateizuordnung anhand der Erweiterung macht die Erwähnung von Httpodbc.dll im URL überflüssig.
Der Einsatz des Internet-Datenbank-Connectors unter Internet Information Server verläuft für dieses Beispiel in sechs Schritten, die im folgenden Diagramm dargestellt sind.
Feld: Wert
Datasource: Web SQL
Template: sample.htx
Datasource: Web SQL
Username: sa
Template: sample.htx
SQLStatement:
+SELECT au_lname, ytd_sales
+ from pubs.dbo.titleview
+ where ytd_sales>5000
Daneben enthält die Datei Sample.idc folgende Elemente:
Die SQL-Anweisung in Sample.idc liefert alle Autorennachnamen und Umsätze in den Einheiten der SQL Server-Beispieldatenbank pubs für die Autoren, deren Bücher einen Umsatz von mehr als 5000 DM erbrachten.
Die resultierende Web-Seite wird im Microsoft Internet Explorer angezeigt und sieht etwa folgendermaßen aus:
Die .htx-Datei ist ein HTML-Dokument mit zusätzlichen, in <%%> oder <!--%%--> eingeschlossenen Kennzeichen, über die vom IDC dynamische Daten in das Dokument eingefügt werden. Die HTML-Formatierung in der .htx-Datei bestimmt gewöhnlich die Formatierung der gelieferten Daten. Durch sechs Schlüsselwörter (begindetail, enddetail, if, else, endif und %z) läßt sich steuern, wie die Daten aus der Datenbank mit dem HTML-Format in der .htx-Datei zusammengeführt werden. Datenbankspaltennamen geben an, welche Daten im HTML-Dokument zurückgegeben werden. Beispielsweise werden durch die folgende Zeile in einer .htx-Datei Daten aus der E-Mailname-Spalte für jeden verarbeiteten Datensatz eingefügt:
<%begindetail%><%E-Mailname%><%enddetail%>
Die Datei Sample.htx ist ein HTML-Dokument mit Internet-Datenbank-Connector-Kennzeichen für aus der Datenbank gelieferte Daten (die Kennzeichen sind zur Verdeutlichung fett gedruckt). Die HTML-Formatierung wurde zum größten Teil entfernt, um die IDC-Kennzeichen hervorzuheben.
Ein Großteil der HTML-Formatierung wurde zur Vereinfachung entfernt.
<HTML>
<BODY>
<HEAD><TITLE>Autoren und Jahresumsatz</TITLE></HEAD>
<%if idc.sales eq ""%>
<H2>Autoren mit mehr als <I>5000</I> verkauften Büchern</H2>
<%else%>
<H2>Autoren mit mehr als <I><%idc.sales%></I> verkauften Büchern</H2>
<%endif%>
<P>
<%begindetail%>
<%if CurrentRecord EQ 0 %>
Abfrageergebnisse:
<B>Autor Jahresumsatz<BR></B>
<%endif%>
<%au_lname%><%ytd_sales%>
<%enddetail%>
<P>
<%if CurrentRecord EQ 0 %>
<I><B>Leider hat kein Autor einen Jahresumsatz größer </I><%idc.sales%>.</B>
<P>
<%else%>
<HR>
<I>
Die hier dargestellte Web-Seite wurde zusammengefügt aus den Ergebnissen der SQL-Abfrage und der Vorlagedatei Sample.htx.
<P>
Die Zusammenfügung wurde vom Microsoft Internet-Datenbank-Connector vorgenommen, und die Ergebnisse wurden durch Microsoft Internet Information Server an diesen Web Browser gesendet.
</I>
<%endif%>
</BODY>
</HTML>
Durch die <%begindetail%>-<%enddetail%>-Abschnitte wird bestimmt, in welchen Bereichen die gelieferten Datenbankzeilen in das Dokument eingefügt werden. Die von der Abfrage gelieferten Spalten sind in <%%> eingeschlossen; in diesem Beispiel <%au_lname%> und <%ytd_sales%>.
Beispielsweise lieferte im letzten Abschnitt die Abfrage in Sample.idc nur die Autoren, deren Jahresumsätze mehr als 5000 DM betrugen. Mit Hilfe eines Parameters können Sie eine Web-Seite erstellen, in der ein Benutzer anstelle der 5000 eine andere Zahl wählen kann.
In der Web-Seite muß der Benutzer zur Eingabe des Umsatzes aufgefordert werden und dann die zugehörige Variable mit sales benannt werden. Dbsamp2.htm zeigt ein Formular mit einem Eingabefeld, über das die Zahl abgefragt wird:
Die HTML-Syntax für das Eingabefeld und die Schaltfläche in Sample2.htm lautet folgendermaßen:
<FORM METHOD="POST" ACTION="/scripts/samples/sample2.idc">
<P>
Geben Sie den aktuellen Jahresumsatz ein: <INPUT NAME="sales" VALUE="5000" >
<P>
<INPUT TYPE="SUBMIT" VALUE="Abfrage starten">
</FORM>
In der Internet-Datenbank-Connector-Datei Sample2.idc wird der fettgedruckte Parameter anstelle der Zahl 5000 verwendet:
SQLStatement:
+SELECT au_lname, ytd_sales
+ from pubs.dbo.titleview
+ where ytd_sales > %sales%
Der Parametername muß hier sales lauten, damit er dem Term <INPUT NAME= sales > auf der Web-Seite entspricht. Parameter sind zur Unterscheidung von normalen SQL-Bezeichnern in Prozentzeichen (%) einzuschließen. Wenn der IDC den Parameter in der .idc-Datei findet, ersetzt er ihn durch den vom Web Browser gesendeten Wert und sendet dann die SQL-Anweisung an den ODBC-Treiber.
Das Prozentzeichen (%) dient auch als Stellvertreterzeichen in SQL. Über Stellvertreterzeichen können Sie in einer SQL-Abfrage ein Tabellenelement suchen, das bestimmte Zeichen enthält. Um ein einfaches % als SQL-Stellvertreterzeichen einzufügen, geben Sie %% ein. Dies verhindert, daß der IDC versucht, das % als Parametermarkierung zu verwenden. Beispiel:
SQLStatement:
+SELECT au_lname, ytd_sales, title
+ from pubs.dbo.titleview
+ where title like '%%%title%%%'
Damit ein Prozentzeichen als SQL-Stellvertreterzeichen erkannt wird, müssen Sie zwei % eingeben und dann den Parameter in Prozentzeichen einschließen, um die Zeichenfolge als Parameter zu kennzeichnen. In dem Beispiel sucht die Abfrage nach allen Einträgen in der title-Spalte, die das Wort title enthalten. Die Abfrage liefert folgendes Ergebnis:
title
title and deed
main title page
author and title
Um alle Einträge zu finden, die mit der Zeichenfolge title beginnen, formulieren Sie die Abfrage folgendermaßen:
SQLStatement:
+SELECT au_lname, ytd_sales, title
+ from pubs.dbo.titleview
+ where title like '%title%%%'
Dieses Beispiel liefert folgendes Ergebnis:
title
title and deed
Um alle Einträge zu finden, die mit der Zeichenfolge title enden, formulieren Sie die Abfrage folgendermaßen:
SQLStatement:
+SELECT au_lname, ytd_sales, title
+ from pubs.dbo.titleview
+ where title like '%%%title%'
Dieses Beispiel liefert folgendes Ergebnis:
title
author and title
Leistungsfähige Gruppen von Web-Seiten lassen sich erstellen, indem die Ausgabe einer Abfrage verwendet wird, um Verknüpfungen mit anderen Abfragen zu liefern. Möchten Sie beispielsweise die Titel eines bestimmten Autors anzeigen, anstatt nur den Autorennamen als Text zurückzugeben, können Sie diesen als Verknüpfung formatieren, die Sie für eine weitere Abfrage nutzen.
Wie Sie diese Art von Verknüpfung erstellen, zeigt ein weiteres Beispiel aus Internet Information Server. Dbsamp3.htm dient dazu, die Abfrage in Sample3.idc auszuführen, die Sample3.htx als Ausgabevorlage verwendet. Sample3.htx liefert Autorennachnamen als Verknüpfungen, die bei Anklicken die Titel für jeden Autor anhand von Sample3a.idc und Sample3a.htx liefern.
Notwendige Felder in einer Internet-Datenbank-Connector (.idc)-Datei
Feld | Beschreibung |
Datasource | Der Name, welcher der ODBC-Systemdatenquelle (DSN) entspricht, die Sie zuvor mit Hilfe des ODBC-Administrators oder des mit den Beispielen bereitgestellten Programms erstellt haben. |
Template | Der Name der HTML-Erweiterungsdatei, welche die Formatierung der von dieser Abfrage gelieferten Daten bestimmt. Vereinbarungsgemäß haben diese Dateien die Erweiterung .htx. |
SQLStatement | Die auszuführende SQL-Anweisung. Die SQL-Anweisung kann Parameterwerte enthalten, die vom Client in Prozentzeichen (%) eingeschlossen werden müssen. Die SQL-Anweisung kann mehrere Zeilen in der Internet-Datenbank-Connector-Datei belegen. Im Anschluß an das Feld SQLStatement wird jede Zeile, die mit einem Pluszeichen (+) beginnt, als Teil der SQL-Anweisung betrachtet. Eine Datei kann mehrere SQL-Anweisungen enthalten. |
Feld | Beschreibung |
DefaultParameters = Param=Wert
[, Param=Wert]
|
Die Parameterwerte, die (falls vorhanden) in der Internet-Datenbank-Connector-Datei verwendet werden, wenn ein Parameter vom Client nicht angegeben wird. |
Expires | Die Anzahl von Sekunden bis zum Aktualisieren einer zwischengespeicherten Ausgabeseite. Ist eine nachfolgende Anforderung identisch, wird die zwischengespeicherte Seite geliefert, ohne daß auf die Datenbank zugegriffen wird. Das Feld ist hilfreich, wenn Sie eine erneute Abfrage der Datenbank nach einem bestimmten Zeitraum erzwingen möchten. Standardmäßig werden Ausgabeseiten vom IDC nicht zwischengespeichert. Dies geschieht nur, wenn das Feld Expires verwendet wird. |
MaxFieldSize | Die maximale Puffergröße, die vom IDC pro Feld reserviert wird. Zeichen, die diese Puffergröße überschreiten, werden abgeschnitten. Der Parameter gilt nur für aus der Datenbank zurückgelieferte Felder mit mehr als 8.192 Bytes. Der Standardwert beträgt 8.192 Bytes. |
MaxRecords | Die maximale Anzahl von Datensätzen, die der IDC für eine Abfrage liefert. Für den Wert gibt es keine Voreinstellung, so daß eine Abfrage maximal 4 Milliarden Datensätze liefern kann. Legen Sie den Wert fest, um die gelieferten Datensätze zu beschränken. |
ODBCConnection | Fügen Sie dieses Feld mit dem Wert Pool ein, um die Verbindung dem Verbindungs-Pool hinzuzufügen und die Verbindung zu der Datenbank für zukünftige Anforderungen offen zu halten. Der IDC sendet dann über eine solche Verbindung die Daten für die nachfolgende Ausführung einer .idc-Datei, welche dieselben Werte für Datasource, Username und Password enthält. Durch Setzen dieser Option können Sie die Leistung des Internet-Datenbank-Connectors verbessern. Daneben gibt es eine nonpool-Option, die angibt, daß die Verbindung für die .idc-Datei, in der die Option gesetzt ist, nicht aus dem Verbindungs-Pool genommen werden soll. Setzen Sie den Wert des Feldes auf nopool, wenn Sie den Verbindungsspeicher gezielter verwalten möchten. Auch wenn die Anzahl der gleichzeitigen Verbindungen beschränkt ist, sollte der Verbindungs-Pool nicht sämtliche Verbindungen belegen, da sonst kein anderer Benutzer eine Verbindung zu dem SQL Server herstellen kann.
Anmerkung Um standardmäßig einen Verbindungs-Pool zu führen, setzen Sie den Registrierungseintrag PoolIDCConnections auf 1. Einzelheiten finden Sie in Kapitel 10, Konfigurieren von Registrierungseinträgen. |
Password | Das Kennwort, das dem Benutzernamen zugeordnet ist. Ist kein Kennwort vergeben, kann dieses Feld weggelassen werden. |
RequiredParameters | Die Parameternamen (falls vorhanden), deren Übergabe durch den Client Httpodbc.dll überprüft; andernfalls wird ein Fehler geliefert. Parameternamen werden durch Kommata getrennt. |
Translationfile | Der Pfad zu der Datei, die nichtenglische Zeichen (wie ä, ö, ü, à, ô oder é) so abbildet, daß Browser sie im HTML-Format richtig anzeigen können. Befindet sich die Übersetzungsdatei nicht in demselben Verzeichnis wie die .idc-Datei, müssen Sie den vollständigen Pfad zu der Übersetzungsdatei mit der folgenden Syntax angeben: Translationfile: C:\Verzeichnisname\Dateiname. Verwenden Sie das Feld, wenn Sie eine Datenbank in einer anderen Sprache als Englisch veröffentlichen. Eine Übersetzungsdatei ist eine Textdatei, die für jedes Sonderzeichen eine Zuordnung im Format Wert=Zeichenfolge<CR> enthält, wobei Wert ein internationales Zeichen ist und Zeichenfolge der HTML-Übersetzungscode. |
Username | Ein gültiger Benutzername für den Datenquellennamen im Feld Datasource.
Anmerkung Wenn Sie Microsoft SQL Server mit der integrierten Sicherheit verwenden, werden die Benutzernamen- und Kennwortfelder in der .idc-Datei nicht ausgewertet. Die Anmeldung am SQL Server erfolgt über die Referenzen des Web-Benutzers. Wird die Anfrage als anonymer Benutzer gestellt, werden Benutzername und Kennwort durch die Einstellungen für den anonymen Benutzer (standardmäßig IUSR_Computer_Name) im Internet-Dienst-Manager bestimmt. Falls die Client-Anforderung Anmeldereferenzen enthält, erfolgt die Anmeldung an SQL Server unter dem vom Endbenutzer angegebenen Benutzernamen und Kennwort. |
Content-Type | Ein gültiger MIME-Typ, der die Rückgabe an den Client beschreibt. Gewöhnlich ist dies text/html, wenn die .htx-Datei HTML enthält. |
ODBCOptions: Optionsname=Wert[,Optionsname=Wert
]
Um beispielsweise die Ausführungszeit einer SQL-Anweisung auf 10 Sekunden zu beschränken und das Verfolgen von ODBC-Funktionsaufrufen zu aktivieren, geben Sie in der IDC-Datei an:
ODBCOptions: SQL_QUERY_TIMEOUT=10, SQL_OPT_TRACE=1, SQL_OPT_TRACEFILE=C:\Sql.log
In der folgenden Tabelle sind alle Optionen zusammengestellt:
Optionsname | Wert | Funktion |
SQL_ACCESS_MODE | 0 = Lesen/Schreiben
1 = Nur Lesen |
Ein Indikator für den ODBC-Treiber oder die Datenquelle, daß die Verbindung keine SQL-Anweisungen unterstützen muß, die Aktualisierungen veranlassen. Dieser Modus ist hilfreich für die Optimierung von Sperrstrategien, für die Transaktionsverwaltung und andere dem Treiber oder der Datenquelle entsprechende Bereiche. Der Treiber muß nicht verhindern, daß solche Anweisungen an die Datenquelle gesendet werden. Das Verhalten des Treibers und der Datenquelle, wenn sie während einer Nur Lesen-Verbindung zur Verarbeitung von nicht nur lesenden SQL-Anweisungen aufgefordert werden, ist implementierungsabhängig. Standardmäßig ist SQL_ACCESS_MODE auf 0 gesetzt, wodurch Lesen und Schreiben zugelassen werden. |
SQL_LOGIN_TIMEOUT | Ganze Zahl | Die Anzahl von Sekunden, innerhalb deren eine Anmeldeanforderung abgeschlossen sein muß, bevor die Verbindung getrennt wird. Der Standardwert ist treiberabhängig und darf nicht 0 sein. Ist der Wert 0, wird die Zeitüberschreitung deaktiviert und ein Verbindungsversuch niemals abgebrochen. Überschreitet die angegebene Zeitschranke die maximale Anmeldezeitschranke in der Datenquelle, setzt der Treiber statt dessen diesen Wert ein. |
SQL_OPT_TRACE | 0 = Trace aus
1 = Trace ein |
Ist das Tracing aktiviert, wird jeder von Httpodbc.dll ausgeführte ODBC-Funktionsaufruf in der Trace-Datei vermerkt. Sie können eine Trace-Datei mit der Option SQL_OPT_TRACEFILE angeben. Ist die Datei bereits vorhanden, hängt ODBC die neuen Daten an die Datei an. Andernfalls wird die Datei erstellt. Ist das Tracing aktiviert, ohne daß eine Trace-Datei angegeben wurde, schreibt ODBC in die Datei SQL.LOG. |
SQL_OPT_TRACEFILE | Dateiname | Der Name der Trace-Datei, die verwendet werden soll, wenn SQL_OPT_TRACE=1 ist. Die Standardeinstellung ist SQL.LOG. |
SQL_PACKET_SIZE | Ganze Zahl | Die Netzwerkpaketgröße in Bytes, die zum Informationsaustausch zwischen dem DBMS (Datenbank-Management-System) und dem Web Server verwendet werden soll.
Anmerkung Zahlreiche Datenquellen unterstützen diese Option nicht oder können nur die Netzwerkpaketgröße liefern. Überschreitet die angegebene Größe die maximale Paketgröße oder ist sie kleiner als die minimale Paketgröße, setzt der Treiber statt dessen diesen Wert ein. |
SQL_TRANSLATE_DLL | Dateiname | Der Name einer DLL, die SQLDriverToDataSource und SQLDataSourceToDriver enthält. Diese Funktionen werden vom Treiber geladen und für Aufgaben wie die Zeichensatzübersetzung verwendet. |
SQL_TRANSLATE_OPTION | Ganze Zahl | Ein Wert, der die spezifische Funktionalität der verwendeten Übersetzungs-DLL steuert. Einzelheiten finden Sie in der Dokumentation für den Treiber und die Übersetzungs-DLL. |
SQL_TXN_ISOLATION | Ganze Zahl
1=Nicht übergebene Lesevorgänge 2=Übergebene Lesevorgänge 4=Wiederholbare Lesevorgänge 8=Serialisierbar 16=Versioning |
Legt die Transaktionsisolationsstufe fest. Der IDC unterstützt keine Transaktionen, die über die Anforderung in der .idc-Datei hinausgehen. Für einige DBMSe bewirkt jedoch das Setzen der Option SQL_TXN_ISOLATION auf 1 (Nicht übergebene Lesevorgänge) eine höhere Konkurrenz und somit bessere Leistung. Allerdings werden u. U. mit dieser Einstellung Daten abgerufen, die von anderen Transaktionen noch nicht an die Datenbank übergeben wurden. |
SQL_MAX_LENGTH | Ganze Zahl | Der maximale Datenumfang, den der Treiber von einer Zeichen- oder binären Spalte zurückgibt. Die Option dient dazu, die Netzwerklast zu reduzieren und sollte nur eingesetzt werden, wenn die Datenquelle (im Gegensatz zu dem Treiber) in einem Multiple-tier-Treiber diese implementieren kann. |
SQL_MAX_ROWS | Ganze Zahl | Die maximale Zeilenzahl, die für eine SELECT-Anweisung zurückgegeben wird. Ist der Wert 0 (Standard), gibt der Treiber alle Zeilen zurück. Die Option dient dazu, die Netzwerklast zu reduzieren, wenn die Datenquelle selbst die Rückgabezeilen beschränken kann. Im Gegensatz dazu begrenzt die vordefinierte Variable MaxRecords des Internet-Datenbank-Connectors die Anzahl der geholten Zeilen. |
SQL_NOSCAN | 0=Escape-Klauseln suchen und konvertieren
1= Escape-Klauseln nicht suchen und konvertieren |
Gibt an, ob der Treiber SQL-Zeichenfolgen nicht auf Escape-Klauseln durchsuchen soll. Ist der Wert 0 (Standard), durchsucht der Treiber SQL-Zeichenfolgen nach Escape-Klauseln. Ist der Wert 1, durchsucht der Treiber SQL-Zeichenfolgen nicht nach Escape-Klauseln, sondern sendet die Anweisung direkt an die Datenquelle. Enthält Ihre SQL-Anweisung keine ODBC-Escape-Klauseln, führt eine besondere Syntax in geschweiften Klammern ( { } ) und das Setzen der Option auf 1 zu einer geringfügigen Leistungsverbesserung, da der Treiber die SQL-Zeichenfolge dann nicht durchsucht. |
SQL_QUERY_TIMEOUT | Ganze Zahl
0=Keine Zeitüberschreitung |
Die Anzahl von Sekunden, innerhalb deren eine SQL-Anweisung ausgeführt sein muß, bevor die Abfrage abgebrochen wird. Ist der Wert 0 (Standard), gibt es keine Zeitschranke. Überschreitet die angegebene Zeitschranke die maximale Zeitschranke in der Datenquelle oder ist sie kleiner als die minimale Zeitschranke, setzt der Treiber statt dessen diesen Wert ein. |
Ganze Zahl | treiberspezifisch | Treiberspezifische Optionswerte können im Format Zahl=Wert angegeben werden. Beispiel:
4322=1, 234=Zeichenfolge |
Ist der Parametername in der .idc-Datei in einfache Anführungszeichen eingeschlossen, wird mit jedem Element der Liste ebenso verfahren. Sie sollten den Parameternamen immer dann in einfache Anführungszeichen setzen, wenn es sich bei der Spalte in der IN-Klausel um eine Zeichenspalte oder um einen anderen Datentyp handelt, bei dem Literale in Anführungszeichen eingeschlossen werden (wie z. B. Daten und Uhrzeiten). Ist der Parametername nicht in einfache Anführungszeichen eingeschlossen, werden auch keine Anführungszeichen um die einzelnen Listenelemente gesetzt. Sie sollten den Parameternamen nicht in einfache Anführungszeichen setzen, wenn es sich bei der Spalte in der IN-Klausel um einen numerischen Datentyp oder um einen anderen Typ handelt, bei dem Literale nicht in Anführungszeichen eingeschlossen werden.
Beispielsweise könnte ein HTML-Formular das folgende Auswahl-Listenfeld enthalten:
<SELECT MULTIPLE NAME="region">
<OPTION VALUE="West">
<OPTION VALUE="Ost">
<OPTION VALUE="Nord">
<OPTION VALUE="Süd">
</SELECT>
Dann können Sie eine .idc-Datei mit der folgenden SQL-Anweisung erstellen:
SQLStatement: SELECT name, region FROM customer WHERE region IN ('%region%')
Falls der Benutzer Nord, West und Ost in dem HTML-Formular ausgewählt hat, wird die SQL-Anweisung folgendermaßen konvertiert:
SELECT name, region FROM customer WHERE region IN ('Nord', 'West', 'Ost')
Ein weiteres Beispiel für ein HTML-Formular ist im folgenden aufgeführt. In diesem Fall werden numerische Daten verwendet, daher wird der Parameter in der . idc-Datei nicht in Anführungszeichen gesetzt.
<SELECT MULTIPLE NAME="jahr">
<OPTION VALUE="1994">
<OPTION VALUE="1995">
<OPTION VALUE="1996">
</SELECT>
Sie können eine .idc-Datei mit der folgenden SQL-Anweisung erstellen:
SQLStatement: SELECT produkt, geschäftssjahr FROM Verkäufe WHERE geschäftsjahr IN (%jahr%)
Falls der Benutzer 1994 und 1995 in dem HTML-Formular ausgewählt hat, wird die SQL-Anweisung folgendermaßen konvertiert:
SELECT produkt, geschäftssjahr FROM Verkäufe WHERE geschäftsjahr IN (1994, 1995)
SQLSTatement:
+insert into perf(testtime, tag) values (getdate(), '%tag%')
+SELECT au_lname, ytd_sales from pubs.dbo.titleview where ytd_sales>5000
+SELECT count(*) as nrecs from pubs.dbo.titleview where ytd_sales>5000
SQLStatement:
+insert into perf(testtime, tag) values (getdate(), '%tag%')
SQLStatement:
+SELECT au_lname, ytd_sales from pubs.dbo.titleview where ytd_sales>5000
SQLStatement:
+SELECT count(*) as nrecs from pubs.dbo.titleview where ytd_sales>5000
Stapelabfragen werden zusammen verarbeitet, während Mehrfachabfragen nacheinander abgearbeitet werden. Daher führt die Formulierung von Abfragen als Stapel zu einer schnelleren Verarbeitung, sofern Ihre Datenbank Stapelabfragen zuläßt.
<%begindetail%>
<%au_lname%>: <%ytd_sales%>
<%enddetail%>
In diesem Fall werden die Spalten au_lname und ytd_sales aufgeführt. Auf diese Weise können Sie jede beliebige Spalte angeben. Spaltennamen können ebenso an jeder anderen Stelle der HTML-Erweiterungsdatei angeführt werden.
Anmerkung Liefert die Abfrage keine Datensätze, wird der <%begindetail%>-<%enddetail%>-Abschnitt übersprungen. Für jede SQL-Anweisung, die eine Ergebnismenge erzeugt (z. B. SELECT), muß die .htx-Datei einen entsprechenden <%begindetail%>-<%enddetail%>-Abschnitt enthalten.
<%begindetail%><%if CurrentRecord EQ 0 %>
Abfrageergebnisse:
</BODY>
<B>Autor Jahresumsatz<BR></B>
<%endif%>
<%au_lname%><%ytd_sales%>
<%enddetail%>
<P>
<%if CurrentRecord EQ 0 %>
<I><B> Leider hat kein Autor einen Jahresumsatz größer </I><%idc.sales%>.</B>
<P>
<%else%>
<HR>
<I>
Die hier dargestellte Web-Seite wurde zusammengefügt aus den Ergebnissen der SQL-Abfrage und der Vorlagedatei Sample.htx.
<P>
Die Zusammenfügung wurde vom Microsoft Internet-Datenbank-Connector vorgenommen, und die Ergebnisse wurden durch Microsoft Internet Information Server an diesen Web Browser gesendet.
</I>
<%endif%>
</HTML>
Die allgemeine Syntax lautet:
<%if Bedingung %>
HTML-Text
[<%else%>
HTML-Text]
<%endif%>
Dabei hat Bedingung die Form:
und Operator kann einer der folgenden sein:
EQ | Wert1 gleich Wert2 |
LT | Wert1 kleiner Wert2 |
GT | Wert1 größer Wert2 |
CONTAINS | ein Teil von Wert1 enthält die Zeichenfolge Wert2 |
<%begindetail%>
<%if au_lname EQ "Green"%>
Hier kommt ein Grüner!
<%endif%>
<%enddetail%>
Die <%if%>-Anweisung kann auch dazu eingesetzt werden, eine besondere Verarbeitung von Informationen in HTTP-Variablen abhängig zu machen. Um beispielsweise eine Seite je nach dem Typ des Client-Web-Browsers unterschiedlich zu formatieren, könnten Sie folgende Bedingung in die HTML-Erweiterungsdatei aufnehmen:
<%if HTTP_USER_AGENT contains "Mozilla"%>
Client unterstützt erweiterte HTML-Merkmale
<%else%>
Client ist <%HTTP_USER_AGENT%>
<%endif%>
Die vordefinierte Variable MaxRecords enthält den Wert des Feldes MaxRecords aus der Internet-Datenbank-Connector-Datei. MaxRecords und CurrentRecord können nur in <%if%>-Anweisungen verwendet werden.
Der Parameter sales hat folgenden Wert: <%idc.sales%>
2. Konvertieren Sie alle Bindestriche in Unterstriche.
3. Konvertieren Sie alle Buchstaben in Großbuchstaben.
In der folgenden Tabelle sind die Standardvariablen aufgeführt. Es handelt sich um Umgebungsvariablen für CGI-Anwendungen und HTTP-Variablen für IDC-Anwendungen.
Server-Variablen von Internet Information
Variable | Bedeutung |
ALL_HTTP | Alle HTTP-Header, die noch nicht in eine der aufgeführten Variablen zerlegt wurden. Diese Variablen haben das Format HTTP_<Headerfeldname>. Beispiel:
HTTP_ACCEPT: */*, q=0.300, audio/x-aiff, audio/basic, image/jpeg, image/gif, text/plain, text/html |
AUTH_TYPE | Die verwendete Art der Echtheitsbestätigung. Wurde der Benutzername vom Server bestätigt, enthält die Variable den Wert Basic. Andernfalls ist sie nicht vorhanden. |
CONTENT_LENGTH | Die Anzahl von Bytes, die das Skript erwarten kann, vom Client zu empfangen. |
CONTENT_TYPE | Der Inhaltstyp der Informationen, die im Rumpf einer POST-Anforderung bereitgestellt werden. |
GATEWAY_INTERFACE | Die Fassung der CGI (Common Gateway Interface)-Spezifikation, der dieser Server entspricht. |
HTTP_ACCEPT | Spezieller HTTP-Header. Werte des Accept:-Feldes werden, durch Kommata getrennt, aneinandergehängt. Sind z. B. die folgenden Zeilen Teil eines HTTP-Headers:
accept: */*; q=0.1hat die Variable HTTP_ACCEPT folgenden Wert: */*; q=0.1, text/html, image/jpeg |
LOGON_USER | Das Windows NT-Konto des Benutzers. |
PATH_INFO | Zusätzliche Pfadinformationen, die vom Client angegeben wurden. Diese umfassen den abschließenden URL-Teil hinter dem Skriptnamen, jedoch vor der Abfrage (sofern vorhanden). |
PATH_TRANSLATED | Der Wert von PATH_INFO, nachdem ein eventuell vorhandener virtueller Pfadname in eine Verzeichnisangabe expandiert wurde. |
QUERY_STRING | Die Informationen hinter dem Fragezeichen (?) in dem URL, der auf dieses Skript verwiesen hat. |
REMOTE_ADDR | Die IP-Adresse des Clients. |
REMOTE_HOST | Der Host-Name des Clients. |
REMOTE_USER | Der Benutzername, der vom Client angegeben und vom Server bestätigt wurde. |
REQUEST_METHOD | Die HTTP-Anforderungsmethode. |
SCRIPT_NAME | Der Name des gerade ausgeführten Skriptprogramms. |
SERVER_NAME | Der Host-Name des Servers (oder seine IP-Adresse), wie er in auf sich selbst verweisenden URLs anzugeben ist. |
SERVER_PORT | Der TCP/IP-Anschluß, an dem die Anforderung empfangen wurde. |
SERVER_PORT_SECURE | Der Wert 0 oder 1. Der Wert 1 gibt an, daß die Anforderung an dem verschlüsselten Anschluß liegt. |
SERVER_PROTOCOL | Der Name und die Version des Informationsgewinnungsprotokolls, auf das sich diese Anforderung bezieht; in der Regel HTTP/1.0. |
SERVER_SOFTWARE | Der Name und die Version des Web Servers, unter der die Internet Server-Erweiterung ausgeführt wird. |
URL | Der URL der Anforderung. |
© 1996 Microsoft Corporation. Alle Rechte vorbehalten.