Copyright © 1995 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.


Kapitel 7

Das World Wide Web

Das World Wide Web (WWW; weltweites Netz oder Gespinst; kurz: Web) ist relativ neu in der Informationshierarchie des Internet. Ziel dieses Projekts ist es, die vielen verschiedenen Dienste, die es im Internet gibt, zu einem einzigen, weltweiten, multimedialen Hypertext-Raum zusammenzufassen. Vielleicht kommt Ihnen das im Augenblick sehr abstrakt vor, aber das WWW lernt man am besten kennen, indem man es benutzt. In diesem Abschnitt werden wir Ihnen zeigen, wie Sie sich mit Ihrem Linux-System in das WWW begeben. Wir demonstrieren auch, wie Sie Ihren eigenen WWW-Server konfigurieren und im Web Dokumente anbieten können.

Das Projekt World Wide Web wurde 1989 von Tim Berners-Lee am European Center for Particle Physics (CERN) ins Leben gerufen. Das Ziel war ursprünglich, der Gemeinde der Forscher in der Teilchenphysik den Zugriff auf vielfältige Informationen durch eine einzige, homogene Schnittstelle zu ermöglichen.

Bevor das WWW entstand, wurde jeder Typ von Information, der im Internet zu finden war, von einem einzigartigen Client-Server-Paar bereitgestellt. Wenn man beispielsweise per FTP Dateien übertragen wollte, benutzte man dazu den ftp -Client, der eine Verbindung zum ftpd -Dämon auf dem Server herstellte. Gopher, USENET-News, die finger-Informationen usw. erforderten alle einen besonderen Client. Die Unterschiede zwischen Betriebssystemen und Rechnerarchitekturen vervielfältigten das Problem -- eigentlich sollten solche Details vor dem Benutzer verborgen werden, der Zugriff zu den Informationen sucht.

Das WWW abstrahiert von den vielen Informationstypen im Internet zu einem einzigen Typ. Man benutzt nur einen WWW-»Client« -- etwa NCSA Mosaic oder Lynx -- für den Zugriff auf das WWW. Im Web wird die Information in Form von Dokumenten dargestellt (auch »Seiten« genannt), wobei jedes Dokument Verweise (Links) auf andere Dokumente enthalten kann. Die Dokumente können auf einem beliebigen Rechner im Internet gespeichert sein, der für den WWW-Zugang konfiguriert ist. Die Präsentation von Informationen in dieser Form bezeichnet man allgemein als »Hypertext« -- dies ist ein sehr wichtiges Konzept, auf dem das gesamte WWW basiert.

Im Abschnitt » Multimedia unter Linux « in Kapitel 5 finden Sie eine genauere Beschreibung von Hypertext.

Ein Beispiel: Das Linux Documentation Project verbreitet verschiedene Dokumente im Zusammenhang mit Linux über das Web. Die »Leitseite« (Home-Page) des LDP, die auf sunsite.unc.edu liegt, enthält Links zu einer Reihe von anderen Linux-bezogenen Seiten irgendwo auf der Welt. Abbildung 7--4. zeigt die Home-Page des LDP.

Abbildung 7-4. Die Home-Page des Linux Documentation Project im World Wide Web

Die hervorgehobenen Textstellen im Dokument sind die Links. Wenn der Benutzer einen Link auswählt (z.B. indem er mit der Maus auf den Text klickt), wird das Dokument übertragen, auf das dieser Link verweist. Die Dokumente können auf praktisch jedem beliebigen System im Internet liegen; die tatsächlichen »Standorte« von WWW-Dokumenten werden vor dem Benutzer verborgen.

Viele der Dokumente, die im Web angeboten werden, sind multimediale Hypertextseiten (siehe oben). Diese Seiten können Verweise auf Grafiken, Sounddaten, MPEG-Videos, PostScript-Dokumente und einiges mehr enthalten. Diese Multimedia-Informationen werden mit dem HyperText Transfer Protocol (HTTP) übertragen. Das WWW ist außerdem in der Lage, auf FTP- und Gopher-Dokumente, USENET-News usw. zuzugreifen.

Wenn Sie beispielsweise via HTTP auf ein Dokument zugreifen, werden Sie wahrscheinlich eine Seite ähnlich der in Abbildung 7--4. zu sehen bekommen -- mit eingebetteter Grafik, Verweisen auf andere Seiten usw. Wenn Sie per FTP auf ein Dokument zugreifen, blicken Sie vielleicht auf das Verzeichislisting eines FTP-Servers (siehe Abbildung 7--5. ). Mit einem Klick auf einen der Verweise in diesem FTP-Dokument übertragen Sie entweder die gewählte Datei oder Sie listen den Inhalt eines Unterverzeichnisses auf.

Abbildung 7-5. Ein FTP-Verzeichnis, mit Mosaic angezeigt` Bei diesem Grad an Abstraktion brauchen wir eine Methode, einzelne Dokumente im Web zu bezeichnen. Universal Resource Locators (URLs) sind die Antwort auf dieses Problem. Ein URL ist einfach ein »Pfadname«, der ein WWW-Dokument eindeutig bezeichnet -- dazu gehören der Rechner, auf dem das Dokument zu finden ist, der Dateiname des Dokuments sowie das Zugriffprotokoll (FTP, HTTP usw.). Ein Beispiel: Die Home-Page des Linux Documentation Project erreichen Sie unter dem URL:

http://sunsite.unc.edu/mdw/linux.html

Lassen Sie uns das genauer untersuchen. Der erste Teil des URLs, http:, bezeichnet das Zugriffprotokoll für das Dokument, in diesem Fall HTTP. Der zweite Teil des URLs, //sunsite.unc.edu, identifiziert den Rechner, auf dem das Dokument gespeichert ist. Der Rest des URLs, /mdw/linux.html, ist der logische Pfadname zu dem Dokument auf sunsite.unc.edu. Dieser ist so ähnlich wie ein UNIX-Pfadname -- er bezeichnet die Datei linux.html im Verzeichnis mdw . Wenn Sie also die Leitseite des LDP aufrufen wollen, starten Sie einfach Ihren WWW-Client und weisen ihn an, auf die URL http://sunsite.unc.edu/mdw/linux.html zuzugreifen -- nichts einfacher als das!

Für den Zugriff auf eine Datei per anonymem FTP können wir etwa folgenden URL benutzen:

ftp://tsx-11.mit.edu/pub/linux/docs/FAQ

Mit diesem URL holen Sie die Linux-FAQs von tsx-11.mit.edu. Die Benutzung dieses URLs in Ihrem WWW-Client ist dasselbe wie die Übertragung der Datei von Hand, also unter Benutzung des ftp -Clients.

Der beste Weg zum Verständnis des Web ist die Erkundung desselben. Im folgenden Abschnitt besprechen wir, wie Sie mit einem WWW-Client umgehen. Weiter hinten in diesem Kapitel erklären wir, wie Sie Ihr eigenes System als WWW-Server konfigurieren, um dem Rest des World Wide Web Dokumente anbieten zu können.

Natürlich brauchen Sie für den Zugriff auf das Web einen Rechner mit direktem Anschluß an das Internet (per Ethernet oder SLIP). In den folgenden Abschnitten setzen wir voraus, daß Sie auf Ihrem System TCP/IP bereits konfiguriert haben, und daß Sie in der Lage sind, mit Clients wie telnet und ftp zu arbeiten.

NCSA Mosaic benutzen

NCSA Mosaic ist einer der beliebtesten WWW-Clients. Es gibt Versionen für den Macintosh, Microsoft Windows und natürlich das X Window System auf UNIX-Rechnern. Selbstverständlich gibt es eine Binärversion für Linux, die Sie in fast allen FTP-Archiven mit Linux-Material finden. Die Original-Mosaic-Distribution können Sie von ftp.ncsa.uiuc.edu beziehen.

NCSA Mosaic verfolgt eine interessante Lizensierungspolitik. Es wird nicht unter der GPL von GNU verteilt. Es steht jedermann frei, Mosaic aus dem FTP-Archiv des NCSA herunterzuladen, aber es ist Firmen nicht gestattet, es als Quell- oder Binärcode weiterzugeben, ohne eine Lizenz vom National Center for Supercomputing Applications (NCSA) zu erwerben. Das Ganze läuft darauf hinaus, daß kommerzielle Distributionen von Linux (z.B. auf CD-ROM oder Diskette aus dem Versandhandel) das Mosaic vom NCSA nicht enthalten dürfen, ohne daß die Lizenzgebühren bezahlt werden. Wahrscheinlich werden Sie Mosaic also herunterladen müssen -- Sie werden es auf Ihren Linux-CD-ROMs nicht finden. Mit großer Wahrscheinlichkeit hat Ihr Rechner bereits einen Anschluß an das Internet, wenn Sie sich in das WWW begeben möchten -- es sollte also kein Problem sein, Mosaic per FTP zu beziehen. (4)

Wir setzen hier voraus, daß Sie ein vernetztes Linux-System unter X benutzen, und daß Sie sich eine Kopie von Mosaic besorgt haben. Wir haben bereits darauf hingewiesen, daß Sie TCP/IP konfiguriert haben und daß Sie außerdem Clients wie telnet und ftp benutzen müssen.

Der Aufruf von Mosaic ist einfach; geben Sie ein:

eggplant$ Mosaic url

wobei URL der Universal Resource Locator des gewünschten Dokuments ist. Wenn Sie keinen URL angeben, sollte Mosaic die Home-Page des NCSA Mosaic anzeigen (siehe Abbildung 7--6. )

Abbildung 7-6. Die Home-Page des NCSA in Mosaic

Die Home-Page des NCSA ist ein guter Ausgangspunkt für eine Erkundung des World Wide Web. Sie enthält Verweise auf Informationen zu Mosaic selbst sowie Demo-Dokumente, die herzeigen, was das Web kann. (Im Abschnitt » Navigation durch das Web « weiter unten in diesem Kapitel finden Sie ausführliche Informationen zur Navigation durch das WWW.)

Während Sie Mosaic benutzen, können Sie sich mit der Laufleiste am Rand des Fensters nach oben und unten durch das Dokument bewegen. Sie haben auch die Möglichkeit, mit den Tasten SPACE und DELETE seitenweise vor- und zurückzublättern; mit den Pfeiltasten scrollen Sie in kleineren Schritten durch das Dokument.

Die Links werden hervorgehoben dargestellt (auf Farbmonitoren meist in blau, auf Schwarz-Weißmonitoren unterstrichen). Um einem Verweis zu folgen, klicken Sie einfach mit der Maus darauf. Mosaic merkt sich die Links, denen Sie schon einmal gefolgt sind; danach werden diese in einer dunkleren Farbe bzw. mit einer gepunkteten Linie unterstrichen dargestellt.

Denken Sie daran, daß die Übertragung von Dokumenten im Web manchmal sehr langsam sein kann. Das hängt von der Geschwindigkeit der Verbindung zwischen Ihrem Rechner und dem Server ebenso ab wie von der Belastung des Netzes zum Zeitpunkt des Zugriffs. Es kann passieren, daß WWW-Server so überlastet sind, daß Sie keine weiteren Verbindungen akzeptieren; Mosaic zeigt dann eine entsprechende Fehlermeldung an. Unten im Mosaic-Fenster wird der Status der Übertragung angezeigt, und solange noch Daten übertragen werden, dreht sich das NCSA-Mosaic-Logo oben rechts im Fenster. Wenn ein Server anscheinend keine Daten mehr schickt oder die Übertragung sehr langsam ist, können Sie mit einem Klick auf das Logo die Verbindung abbrechen.

Beachten Sie, daß in viele Dokumente Grafiken eingebettet sind -- beispielsweise der Mosaic-Schriftzug oben auf der Home-Page von Mosaic. Falls Sie eine langsame Verbindung zum Netz benutzen, können Sie im Menü Options die Option Delay Image Loading aktivieren, um die Bilder in der Größe von Icons anzeigen zu lassen. Erst mit einem Klick auf solch ein Icon laden Sie dann das Bild in seiner vollen Größe.

Wenn Sie mit Mosaic den Verweisen folgen, merkt sich das Programm jedes besuchte Dokument in der »Window History«. Mit dem Punkt Window History... im Menü Navigate rufen Sie diese History-Funktion wieder auf. Ein Klick auf die Schaltfläche Back am unteren Rand des Mosaic-Fensters bringt Sie zu bereits besuchten Dokumenten aus der Window-History zurück; mit einem Klick auf Forward bewegen Sie sich vorwärts durch die History.

Viele Mosaic-Befehle sind auch als »Hotkey« realisiert. So entspricht beispielweise ein Druck auf die Taste b dem Anklicken der Schaltfläche Back , ein Druck auf f bewirkt dasselbe wie ein Klick auf Forward , und die Window-History erreichen Sie mit h.

Sie können häufig besuchte URLs in der »Hotlist« von Mosaic ablegen. Jedesmal, wenn Sie ein Dokument sehen, das Sie vielleicht später noch einmal besuchen möchten, sollten Sie den Punkt Add Current to Hotlist aus dem Menü Navigate wählen. Mit dem Punkt Hotlist... aus diesem Menü oder mit der Taste H lassen Sie Ihre Hotlist wieder anzeigen. Abbildung 7--7. zeigt eine solche Hotlist. Mit einem Doppelklick auf einen der Einträge laden Sie das entsprechende Dokument aus dem Web herunter.

Abbildung 7-7. Benutzung der Hotlist in Mosaic

Wir haben bereits erwähnt, daß Sie neue URLs besuchen können, indem Sie Mosaic mit dem URL als Argument aufrufen. Ein anderer Weg dorthin führt über den Punkt Open URL... aus dem Menü File . Geben Sie einfach den URL in das Textfenster ein, drücken Sie ENTER, und das entsprechende Dokument wird übertragen.

Beachten Sie auch, daß Mosaic das Ausschneiden (und Einfügen) von Texten aus den Dokumenten und Texteingabefeldern unterstützt (etwa im Fenster Open URL ) -- genau so, wie in einem xterm -Fenster. Das heißt: Wenn Sie mit gedrückter linker Taste die Maus ziehen, markieren Sie damit einen Textbereich; ein Druck auf die rechte Maustaste fügt diesen Text an der Cursorposition ein. Sie können Texte auch zwischen Mosaic und anderen X-Anwendungen wie z.B. xterm hin- und herkopieren. Auf diese Weise haben Sie die Möglichkeit, beispielsweise in einem xterm -Fenster einen URL auszuschneiden und diesen in das Open URL -Fenster einzufügen.

Wenn Sie den Punkt Fancy Selections aus dem Menü Options wählen, wird der Text aus dem Dokumentfenster von Mosaic beim Ausschneiden und Einfügen seine Formatierung beibehalten (etwa Zeilenumbrüche, das Aussehen von Listen usw.).

Wie Sie sehen, ist Mosaic eine umfangreiche Anwendung mit vielen Optionen. Es gibt zahlreiche Möglichkeiten, das Verhalten von Mosaic zu beeinflussen -- einige Methoden der individuellen Anpassung ändern sich allerdings von einer Version zur nächsten. Glücklicherweise stellt das NCSA die komplette Mosaic-Dokumentation online zur Verfügung -- natürlich im WWW, wo sonst? Wenn Sie den Punkt About... im Help -Menü wählen, landen Sie auf der Leitseite der Online-Dokumentation zu Mosaic.

Dort finden Sie sowohl eine Beschreibung der umfangreichen Fähigkeiten von Mosaic als auch Hinweise zur individuellen Anpassung. Im Mosaic Handbuch für das X Window System finden Sie weitere Hinweise zu Benutzung und Anpassung von Mosaic.

Mosaic ist nicht der einzige Browser für WWW-Dokumente (to browse: blättern , stöbern). Ein anderer vielseitiger Browser ist Lynx. Es handelt sich um einen textbasierten Browser -- bei der Benutzung geht also die Grafik verloren. Dafür ist Lynx schnell und kommt Ihnen damit vielleicht entgegen. Lynx können Sie auch ohne das X Window System benutzen.

Navigation durch das Web

Das World Wide Web wächst mit einer unglaublichen Geschwindigkeit. Es kann sogar sein, daß es bereits völlig anders aussieht als hier beschrieben, wenn Sie dieses Buch lesen. Schon im ersten Jahr seines Bestehens sind Tausende von WWW-Servern eingerichtet worden.

Mit dem Anwachsen des Web auf unzählige Server in der ganzen Welt wird es immer schwieriger, die vorhandenen Informationen zu finden. Wie können Sie Informationen zu einem bestimmten Thema aufspüren, wenn Sie nicht zufälligerweise auf einen interessanten URL oder ein Hyperlink stoßen?

Glücklicherweise ist im Web eine Reihe von Diensten entstanden, die diese Aufgabe vereinfachen. Keiner dieser Dienste bietet eine komplette Liste aller WWW-Server, aber der hohe Grad der Verknüpfung innerhalb des Web trägt dazu bei, daß Sie das, was es zu finden gibt, auch wirklich finden werden.

Denken Sie immer daran, daß das Web ein dynamischer Ort ist. Wir haben uns große Mühe gegeben, hier nur aktuelle Informationen zu bieten, aber wenn Sie dieses Buch in Händen halten kann es durchaus sein, daß einige dieser Links verlegt wurden oder gar nicht mehr existieren.

Einen günstigen Ausgangspunkt bildet der Internet Resources Meta-Index des NCSA, der eine Reihe von Verzeichnissen und Indizes der Dienste auflistet, die über das WWW erreichbar sind. Dazu gehören WWW-, Gopher-, WAIS- und FTP-Dienste. Der URL für den Meta-Index ist:

http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/MetaIndex.html

Hierher gelangen Sie auch über den Punkt Internet Resources Meta-Index im Menü Navigate von NCSA Mosaic.

Die Verwalter von neuen WWW-Servern werden aufgefordert, dem NCSA ihren Service bekanntzugeben. Diese Ankündigungen erscheinen auf der »What's New«-Seite von NCSA Mosaic unter:

http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/whats-new.html

Sie können sich die Seite »What's New« als die Tageszeitung des World Wide Web vorstellen. Diese Seite wird beinahe jeden Tag mit den Listen neuer Dienste aktualisiert. Am Centre Universitaire d'Informatique (CUI) an der Universität Genf werden diese What's New-Listen als »W3-Katalog« archiviert; die Adresse ist:

http://cui_www.unige.ch/w3catalog

Diese Seite ist wie ein Formular aufgebaut, in das Sie Suchbegriffe oder reguläre Ausdrücke eintragen können, nach denen die What's New-Listen durchsucht werden. Sie erhalten eine Liste der Ankündigungen, die zu Ihren Suchbegriffen passen.

Ein anderes interessantes Projekt ist der WWW-Wurm, einer der vielen »Roboter«, die das Web durchkämmen und dabei URLs und Dokumententitel einsammeln. Sie können anschließend die Liste der Web-Server durchsuchen, die der Wurm zusammengestellt hat. Sie erreichen den Wurm unter:

http://www.cs.colorado.edu/home/mcbryan/WWWW.html

Beachten Sie, daß aufgrund des hohen Verbrauchs an Computerressourcen, die der Einsatz des Wurms mit sich bringt, seine Datenbasen nur etwa alle paar Monate aktualisiert werden.

Es gibt noch andere WWW-Roboter oder »Spinnen«, die so ähnlich wie der WWW-Wurm arbeiten. Unter diesem URL werden einige davon aufgelistet:

http://web.nexor.co.uk/mak/doc/robots/active.html

O'Reilly & Associates entwickelten den Global Network Navigator ( GNN ), eine Zeitschrift und Informationsquelle im Web. Die Zeitschrift ist über das WWW kostenlos erhältlich. Unter anderem finden Sie darin eine WWW-basierte Schnittstelle zu The Whole Internet Catalog , einem nach Themen geordneten Verzeichnis von Ressourcen im Internet. The Whole Internet Catalog ist eine hervorragende Quelle für themenbezogene Informationen im Internet. Sie finden den Global Network Navigator unter dem URL:

http://nearnet.gnn.com/gnn/GNNhome.html

Es gibt Dutzende weiterer Ressourcen, mit deren Hilfe Sie das Web oder das gesamte Internet nach Informationen zu einem bestimmten Thema durchsuchen können. Die Seite »W3 Search Engines« (etwa: Suchmaschinen) des CUI stellt Schnittstellen zu einigen davon zur Verfügung, darunter zum WWW-Wurm, zu The Whole Internet Catalog und zu anderen der oben aufgeführten Indizes. Die Adresse der W3 Search Engines-Seite ist:

http://cui_www.unige.ch/meta-index.html

Wenn Sie gar nicht wissen, welchen Index Sie ausprobieren sollen, fangen Sie einfach hier an. Auf dieser Seite finden Sie Suchhilfen u.a. für Gopher-, USENET- sowie andere Typen von Informationen ebenso wie zu WWW-Servern.

Einen eigenen WWW-Server einrichten

Nachdem Sie jetzt wissen, was das Web zu bieten hat, können Sie Ihre eigene Tankstelle an der Datenautobahn eröffnen. Es ist nicht schwierig, einen eigenen WWW-Server zu betreiben. Zwei Dinge müssen Sie tun: den httpd -Dämon konfigurieren und die Dokumente schreiben, die Sie auf dem Server anbieten möchten.

httpd ist der Dämon, der auf Ihrem System die HTTP-Anfragen bedient. Jedes Dokument, das unter einem http: -URL angesprochen wird, wird mit Hilfe des httpd bereitgestellt. Genauso werden ftp: -URLs von ftpd bearbeitet, gopher: -URLs von gopherd usw. Es gibt keinen »WWW-Dämon«; die verschiedenen URLs benutzen verschiedene Dämonen, um beim Server Informationen anzufordern.

Es gibt verschiedene HTTP-Server. Wir besprechen hier den httpd vom NCSA, der einfach zu konfigurieren und sehr flexibel ist. In diesem Abschnitt befassen wir uns mit der Installation und Konfiguration der grundlegenden Aspekte dieser httpd -Version. Weiter unten in diesem Kapitel gehen wir darauf ein, wie Sie Ihre eigenen Dokumente in HTML schreiben (der Formatierungssprache für WWW-Seiten) und behandeln fortgeschrittene Aspekte der Server-Konfiguration wie z.B. das Erstellen von Formularen, die interaktiv ausgefüllt werden können.

Der erste Schritt besteht natürlich darin, daß Sie eine ausführbare Datei eines httpd für Linux besorgen; eventuell ist in Ihrer Linux-Distribution bereits eine enthalten. Falls nicht, können Sie die Datei aus einem der Archive beziehen. Falls Sie sonst gar nicht weiterkommen, besorgen Sie den httpd -Quellcode vom NCSA und kompilieren Sie das Programm selbst.

Unter der URL:

http://hoohoo.ncsa.uiuc.edu

können Sie weitere Informationen über den httpd vom NCSA finden sowie Hinweise dazu, wie Sie ihn übertragen können.

In Internet-Server Einrichten und Verwalten werden Einrichtung und Pflege eines WWW-Servers sowie Mailing-Listen, Gopher-Server und andere Dienste beschrieben.

Wenn Sie das binäre httpd -Paket installieren, werden Sie anschließend die ausführbare Datei des httpd und einige dazugehörige Verzeichnisse vorfinden:

cgi-bin
Enthält die ausführbaren Dateien für verschiedene Common Gateway Interface-Programme. Diese Programme bedienen die Anfragen von interaktiven Formularen, die auf Ihrem Server benutzt werden. Wir besprechen das im Detail im Abschnitt » Das CGI-Skript schreiben «.
cgi-src
Enthält den Quellcode der Programme in cgi-bin .
conf
Enthält die Konfigurationsdateien für httpd . Wir besprechen weiter unten, wie diese Dateien angepaßt werden.
icons
Enthält Icons, mit denen Sie Ihre HTML-Seiten schmücken können. Wir kommen im Abschnitt » HTML-Dokumente schreiben « darauf zu sprechen.
logs
Enthält Protokolldateien des Servers.
support
Enthält verschiedene Hilfsprogramme.

Diese Dateien stehen normalerweise in einem einzigen Root-Verzeichnis für den Server, beispielsweise /etc/httpd . Der ausführbare Server selbst ist dann /etc/httpd /httpd , die Konfigurationsdateien stehen in /etc/httpd/conf usw.

Unsere Aufgabe besteht jetzt darin, die Konfigurationsdateien im Unterverzeichnis conf anzupassen. Sie sollten Ihr Augenmerk auf vier Dateien in diesem Verzeichnis legen: access.conf-dist , httpd.conf-dist , mime.types und srm.conf-dist . Kopieren Sie die Dateien, deren Namen auf -dist enden und passen Sie diese an Ihr eigenes System an. Ein Beispiel: Kopieren Sie access.conf-dist auf access.conf und editieren Sie die Datei.

Unter http://hoohoo.ncsa.uiuc.edu finden Sie die komplette Dokumentation dazu, wie httpd konfiguriert wird. Hier zeigen wir Ihnen beispielhafte Konfigurationsdateien, die zu einem in der Praxis laufenden httpd gehören.

httpd.conf

Die Datei httpd.conf ist die Konfigurationsdatei des eigentlichen Servers. Kopieren Sie zuerst httpd.conf-dist nach httpd.conf und editieren Sie die Datei. Unten finden Sie ein Beispiel für eine httpd.conf -Datei mit Kommentaren zu jedem Feld.

# Beispiel für httpd.conf-Datei

# httpd als Standalone-Server betreiben.
ServerType standalone

# Port 80 ist der Standard-Port für httpd, aber bei Portnummern unter
# 1023 müssen Sie den Server als Root betreiben.
Port 80

# Die Benutzer-ID, unter der httpd laufen wird. Stellen Sie sicher, daß
# 'nobody' in /etc/passwd steht.
User nobody

# Die Adresse, unter der der Verwalter dieses Servers zu erreichen ist.
ServerAdmin mdw@zucchini.veggie.org

# Das Verzeichnis, in dem die Hilfsdateien des httpd stehen.
ServerRoot /etc/httpd

# Hier stehen die Protokolldateien des Servers. Diese Pfadnamen gelten
# relativ zu ServerRoot, wenn sie nicht mit '/' beginnen.
ErrorLog logs/httpd.errs
TransferLog logs/httpd.access
PidFile logs/httpd.pid

# Der Rechnername, der als Name des Servers gemeldet wird. Dies muß
# ein existierender, registrierter Rechnername sein. Ein Beispiel: httpd
# könnte auf einem Rechner laufen, dessen Alias-Name 'www.veggie.org'
# ist, wenn der eigentliche Rechnername anders lautet.
ServerName www.veggie.org

Die Anweisung ServerType bestimmt, wie der Server betrieben werden soll -- entweder als Standalone-Dämon (eigenständiger Dämon, wie in diesem Beispiel) oder von inetd aufgerufen. Aus verschiedenen Gründen empfiehlt es sich, httpd als eigenständigen Dämon zu starten; andernfalls müßte inetd für jede eingehende Verbindung einen neuen httpd starten.

Eine trickreiche Stelle ist die Angabe der Portnummer. Vielleicht möchten Sie httpd nicht als root sondern unter der eigenen Benutzer-ID laufen lassen (wenn Sie keinen Root-Zugang zu dem betreffenden Rechner haben). In diesem Fall müssen Sie eine Portnummer oberhalb von 1023 benutzen. Wenn wir beispielsweise angeben:

Port 2112

können wir httpd als normaler Benutzer betreiben. In diesem Fall müssen die HTTP-URLs für dieses System folgendermaßen aussehen:

http://www.veggie.org:2112/...

Wenn im URL keine Portnummer angegeben wird (wie das meistens der Fall ist), gilt Port 80 als Voreinstellung.

srm.conf

srm.conf ist die Server Resource Map-Datei. Hier wird eine Reihe von Gegebenheiten konfiguriert, die den Server betreffen -- etwa das Verzeichnis, in dem auf Ihrem System die HTML-Dokumente stehen oder das Verzeichnis für die verschiedenen CGI-Binaries. Lassen Sie uns ein Beispiel für eine srm.conf schrittweise durchgehen:

# Das Verzeichnis für die HTML-Dokumente.
DocumentRoot /usr/local/html_docs
# Persönliches Verzeichnis für die HTML-Dokumente eines jeden
# Benutzers.

UserDir public_html

Hier bestimmen wir das Verzeichnis DocumentRoot, in dem die Dokumente stehen, die per HTTP angeboten werden. Diese Dokumente sind in HTML geschrieben, der HyperText Markup Language. Wir besprechen diese Formatierungssprache im Abschnitt » HTML-Dokumente schreiben « . Wenn beispielsweise jemand auf den URL:

http://www.veggie.org/fruits.html

zugreift, wird tatsächlich die Datei /usr/local/html_docs/fruits.html angesprochen.

Die Anweisung UserDir benennt ein Verzeichnis, das jeder Benutzer in seinem oder ihrem Home-Verzeichnis anlegen kann, um dort öffentlich zugängliche HTML-Dateien abzulegen. Ein Beispiel: Wenn wir den URL:

http://www.veggie.org/~mdw/linux-info.html

benutzen, wird tatsächlich auf die Datei ~mdw/public_html/linux-info.html zugegriffen.

# Wenn ein URL mit einem Verzeichnis, aber ohne Dateinamen eingeht, biete
# diese Datei (falls vorhanden) als Index an.
DirectoryIndex index.html

# 'Getürkte' Indizes ermöglichen.
FancyIndexing on

Hier schalten wir die Indizierungsfähigkeiten von httpd ein. Dieses Beispiel bewirkt folgendes: Wenn ein Client versucht, einen Verzeichnis-URL anzusprechen, bekommt er die Datei index.html aus diesem Verzeichnis zurück (falls vorhanden). Andernfalls wird httpd einen »getürkten« Index erstellen, in dem Icons verschiedene Dateitypen darstellen. Abbildung 7--8. zeigt ein Beispiel für einen solchen Index.

Abbildung 7-8. Gopher-Verzeichnis mit getürkten Index-Icons in Mosaic

Die Icons werden mit der Anweisung AddIcon zugeordnet, so wie hier:

# Auswahl der verschiedenen Icons für getürkte Indizes per
Dateiname;
# Beispiel: Wir benutzen DocumentRoot/icons/movie.xbm für Dateien mit
# der Endung .mpg
AddIcon /icons/movie.xbm .mpg
AddIcon /icons/back.xbm ..
AddIcon /icons/menu.xbm ^^DIRECTORY^^
AddIcon /icons/blank.xbm ^^BLANKICON^^
DefaultIcon /icons/unknown.xbm

Die Dateinamen der Icons (etwa /icons/movie.xbm ) werden per Voreinstellung relativ zu DocumentRoot gesucht. (Es gibt andere Möglichkeiten, die Pfadnamen zu Dokumenten und Icons anzugeben -- z.B. mit Hilfe von Alias-Namen. Wir besprechen das weiter unten.) Sie können außerdem mit der Anweisung AddIconByType einem Dokument ein Icon abhängig vom MIME-Typ des Dokuments zuordnen. Mehr zu diesem Thema finden Sie im Abschnitt » Ein Exkurs: MIME-Typen «.

Die optionalen Anweisungen ReadmeName und HeaderName geben die Namen von Dateien an, die in den Index aufgenommen werden sollen, den httpd erzeugt.

ReadmeName README
HeaderName HEADER

Damit bewirken Sie, daß die Datei README.html (falls im aktuellen Verzeichnis vorhanden) an den Index angehängt wird. Wenn es diese Datei nicht gibt, wird statt dessen README angehängt. Ebenso wird eine der Dateien HEADER.html oder HEADER dem von httpd erzeugten Index vorangestellt. Sie können diese Dateien benutzen, um den Inhalt eines bestimmten Verzeichnisses zu beschreiben, wenn ein Client einen Index anfordert.

# Lokale Zugriffdatei
AccessFileName .htaccess
# Standard-MIME-Typ für Dokumente
DefaultType text/plain

Die Anweisung AccessFileName bestimmt den Namen der Datei, die den lokalen Zugriff für jedes einzelne Verzeichnis regelt. (Wir beschreiben diesen Punkt weiter unten zusammen mit der Datei access.conf ). Mit der Anweisung DefaultType bestimmen Sie den MIME-Typ für Dokumente, die nicht in mime.types aufgelistet sind. Wir gehen im Abschnitt » Ein Exkurs: MIME-Typen « genauer darauf ein.

# Speicherort der icons
Alias /icons/ /usr/local/html/icons/

# Speicherort der CGI-Binaries
ScriptAlias /cgi-bin/ /usr/local/html/cgi-bin/

Mit der Anweisung Alias vergeben Sie einen Alias-Pfadnamen für beliebige Dokumente, die in srm.conf stehen oder per URL angesprochen werden. Weiter oben haben wir mit der Anweisung AddIcon Icon-Namen vergeben, indem wir Pfadnamen wie /icons/movie.xbm benutzt haben. Hier legen wir fest, daß der Pfadname /icons/ zu /usr/local/html/icons/ übersetzt werden soll. Die verschiedenen Icon-Dateien sollten deshalb im zuletzt genannten Verzeichnis abgelegt werden. Mit Alias können Sie auch andere Pfadnamen einstellen.

Die Anweisung ScriptAlias funktioniert ganz ähnlich, allerdings für die aktuellen Standorte der CGI-Skripts auf dem System. In unserem Beispiel möchten wir die Skripts im Verzeichnis /usr/local/html/cgi-bin/ ablegen. Jedesmal wenn ein URL benutzt wird, dessen Verzeichnisname mit /cgi-bin/ beginnt, wird dieser URL in den tatsächlichen Verzeichnisnamen übersetzt. Im Abschnitt » Das CGI-Skript schreiben « finden Sie weitere Informationen zu CGI und Skripts.

access.conf

Die letzte Konfigurationsdatei, der Sie sich sofort zuwenden sollten, ist access.conf -- das ist die übergeordnete Konfigurationsdatei für httpd -Zugriffe. Hier wird festgelegt, auf welche Dateien in welcher Weise zugegriffen werden darf. Wenn Sie diesen Punkt genauer bestimmen möchten, haben Sie auch die Möglichkeit, für jedes Verzeichnis eine lokale Zugriff-Konfigurationsdatei anzulegen. (Erinnern Sie sich, daß wir in srm.conf die Anweisung AccessFileName benutzt haben, um die lokale Zugriffsdatei für jedes Verzeichnis auf .htaccess zu setzen.

Hier zeigen wir ein Beispiel für eine access.conf -Datei. Sie besteht aus einer Reihe von <Directory>-Punkten, von denen jeder die Optionen und Attribute für ein bestimmtes Verzeichnis festlegt:

# Optionen für das cgi-bin-Skript-Verzeichnis setzen.
<Directory /usr/local/html/cgi-bin>
Options Indexes FollowSymLinks
</Directory>

Hiermit bestimmen wir, daß das CGI-Skript-Verzeichnis mit den Zugriffsoptionen Indexes und FollowSymLinks versehen werden soll. Es gibt eine ganze Reihe von Zugriffsoptionen, darunter auch:

FollowSymLinks
Symbolischen Links in diesem Verzeichnis soll nachgegangen werden, um die Dokumente darzustellen, auf die die Links verweisen.
SymLinkIfOwnerMatch
So ähnlich wie FollowSymLinks, aber dem Link soll nur gefolgt werden, wenn der Eigner des Links mit dem Eigner des Ziels identisch ist.
ExecCGI
Die Ausführung von CGI-Skripts aus diesem Verzeichnis heraus soll gestattet sein.
Indexes
In diesem Verzeichnis dürfen Indizes erstellt werden.
None
Alle Optionen sollen für dieses Verzeichnis abgeschaltet werden.
All
Alle Optionen sollen für dieses Verzeichnis eingeschaltet werden.

Es gibt noch weitere Optionen; schlagen Sie Details in der Dokumentation zu httpd nach.

Hier schalten wir verschiedene Optionen und andere Attribute für /usr/local/html ein, das Verzeichnis, in dem unsere HTML-Dokumente stehen.

<Directory /usr/local/html>

Options Indexes FollowSymLinks

# Die lokale Zugriffdatei .htaccess darf alle hier aufgelisteten
# Attribute außer Kraft setzen
AllowOverride All

# Zugriffsbeschränkungen für Dokumente in diesem Verzeichnis
<Limit GET>

order allow,deny
allow from all
</Limit>

</Directory>

Wir schalten hiermit die Optionen Indexes und FollowSymLinks für dieses Verzeichnis ein. Die Option AllowOverride macht es möglich, daß die lokale Zugriffsdatei in den einzelnen Verzeichnissen ( .htaccess , wie in srm.conf definiert) die hier gesetzten Optionen überschreibt. Die Datei .htaccess hat dasselbe Format wie die globale Datei access.conf , bezieht sich aber nur auf das Verzeichnis, in dem sie steht. Auf diese Weise können wir die Attribute für ein bestimmtes Verzeichnis setzen, indem wir in diesem Verzeichnis eine Datei .htaccess anlegen, statt die Attribute in der globalen Datei aufzulisten.

Die lokalen Zugriffsdateien werden in erster Linie benötigt, um einzelnen Benutzern die Möglichkeit zu geben, die Zugriffsrechte für persönliche HTML-Verzeichnisse (etwa ~/public_html ) selbst zu vergeben, ohne daß der Systemverwalter die globale Zugriffsdatei ändern muß. Allerdings spielt hier die Systemsicherheit mit hinein. So könnte ein Benutzer beispielsweise die Zugriffsrechte in seinem oder ihrem Verzeichnis so setzen, daß beliebige Clients teure CGI-Skripts auf dem Server aufrufen können. Wenn Sie die Option AllowOverride ausschalten, haben die Benutzer keine Möglichkeit mehr, die Zugriffsattribute in der globalen Datei access.conf außer Kraft zu setzen. Sie erreichen dies mit:

AllowOverride None

was im Effekt dem Ausschalten der lokalen .htaccess -Dateien gleichkommt.

Das Feld <Limit GET> wird benutzt, um Zugriffsregeln für die Clients aufzustellen, die von diesem Server Dokumente abholen möchten. In diesem Beispiel bestimmen wir order allow,deny -- das bedeutet, daß allow-Regeln vor deny-Regeln ausgewertet werden sollen (Erlaubnisregeln vor Verbotregeln). Wir stellen dann die Regel allow from all auf, die einfach besagt, daß beliebige Systeme auf die Dokumente dieses Servers zugreifen dürfen. Wenn Sie den Zugriff durch einen bestimmten Rechner oder eine bestimmte Domain verhindern möchten, sollten Sie eine Zeile wie:

deny from .nuts.com biffnet.biffs-house.us

einfügen. Der erste Eintrag verhindert den Zugriff durch alle Rechner in der Domain nuts.com; der zweite schließt den Rechner biffnet.biffs-house.us aus.

httpd starten

Jetzt sind Sie soweit, daß Sie httpd starten können, damit Ihr System Anfragen an HTTP-URLs bedienen kann. Wir haben bereits erwähnt, daß Sie httpd von inetd aus oder als eigenständigen Server betreiben können; wir beschreiben hier httpd als eigenständigen Server.

Sie rufen httpd ganz einfach mit dem Befehl:

httpd -f konfigurationsdatei

auf. Dabei ist die Konfigurationsdatei der Pfadname von httpd.conf . Ein Beispiel:

/etc/httpd/httpd -f /etc/httpd/conf/httpd.conf

startet httpd mit den Konfigurationsdateien, die in /etc/httpd/conf stehen.

Werfen Sie einen Blick in die Protokolldateien von httpd (deren Standort in httpd.conf steht); dort finden Sie alle Fehlermeldungen, die beim Starten des Servers oder beim Zugriff auf Dokumente erzeugt werden. Denken Sie daran, daß Sie httpd als root betreiben müssen, wenn ein Port mit der Nummer 1023 oder kleiner benutzt werden soll. Sobald der httpd zu Ihrer Zufriedenheit läuft, können Sie ihn beim Booten automatisch starten lassen, indem Sie die entsprechende httpd -Befehlszeile in eine Ihrer rc -Dateien einfügen (etwa /etc/rc.d/rc.local ).

Bevor Sie auf Ihrem Web-Server HTTP-Dokumente anbieten können, müssen Sie diese erstellen. Diesen Schritt beschreiben wir im nächsten Abschnitt.

HTML-Dokumente schreiben

Dokumente, die per HTTP angefordert werden, können verschiedene Formate haben. Dazu gehören Grafiken, PostScript-Dateien, Sounddaten, MPEG-Video usw. Die Konfigurationsdatei mime.types beschreibt die Dokumenttypen, die httpd handhaben kann.

Der häufigste per HTTP übertragenene Dokumententyp ist die HyperText Markup Language-Datei (HTML-Datei). HTML-Dokumente können Text, Links zu anderen Dokumenten, eingebettete Grafik usw. enthalten. Die Mehrzahl der Dokumente, die Sie im Web zu sehen bekommen, ist in HTML geschrieben.

HTML läßt sich erstaunlich einfach erlernen. Mit Hilfe unserer Anleitung sollten Sie in weniger als einer Stunde in der Lage sein, HTML-Dokumente zu schreiben und im Web anzubieten.

Es gibt viele Tools für die Konvertierung von anderen Formatierungssprachen (z.B. LATEX, Microsoft RTF usw.) nach HTML und umgekehrt. Falls Sie besonders lange Dokumente in einer anderen Formatierungssprache vorliegen haben, die Sie im Netz anbieten möchten, ist die automatische Konvertierung nach HTML vielleicht einfacher; alternativ dazu könnten Sie die Dokumente im PostScript- oder DVI-Format anbieten.

Die offizielle Quelle für Informationen über HTML ist der URL:

http://www.ncsa.uiuc.edu/General/Internet/WWW/HTMLPrimer.html

Dort finden Sie Hinweise für frischgebackene HTML-Autoren. In diesem Abschnitt werden wir Ihnen die wesentlichen Eigenschaften von HTML präsentieren, damit Sie bald loslegen können. Im Mosaic Handbuch für das X Window System finden Sie ebenfalls eine Anleitung zu HTML.

HTML-Grundlagen

Wenn Sie bereits mit anderen Formatierungssprachen wie TEX vertraut sind, wird HTML Ihnen im Vergleich dazu relativ einfach vorkommen. So könnte ein kleines HTML-Dokument aussehen:

Ye Olde Generic HTML Document
<h1>Writing HTML for Fun and Profit</h1>

Although writing HTML documents may not be a common source
of income, <em>authors</em> tend to bend the rules in this
respect.

<p> The advantage? It's really too easy for words.

Innerhalb von HTML-Dokumenten werden einzelne Elemente mit einer <markierung> eingeleitet und mit </markierung> abgeschlossen (tag.../tag). (5)

Wie Sie sehen, fängt unser Dokument mit:

Ye Olde Generic HTML Document

an. Damit geben wir diesem Dokument einen Titel. Direkt danach steht ein <h1>-Element, das eine Überschrift der obersten Ebene definiert. Unter NCSA Mosaic für X erscheint der Titel immer im Fenster Document Title , während die Überschrift im Dokument selbst steht.

Alle HTML-Dokumente müssen einen Titel haben, aber die Überschriften sind natürlich optional. Für HTML ist eine Überschrift einfach ein Textabschnitt, der in einer größeren und/oder fetteren Schrift gesetzt wird; sie hat keinen Einfluß auf die Struktur des Dokuments.

HTML kennt sechs Ebenen für Überschriften:

<h1>Überschrift der ersten Ebene</h1>
<h2>Überschrift der zweiten Ebene</h2>
...
<h6>Überschrift der sechsten Ebene</h6>

Im Anschluß an die Überschrift folgt der Textkörper des Dokuments. Wie Sie sehen, benutzen wir die Markierung <em>, um Text hervorzuheben:

...of income, <em>authors</em> tend to bend the rules in this...

Absätze werden mit der Markierung <p> eingeleitet. HTML ignoriert Leerzeilen und Einrückungen in den Dokumenten. Deshalb müssen Sie <p> benutzen, wenn Sie eine Leerzeile einfügen und mit einem neuen Absatz fortfahren möchten (anders als z.B. in TEX, wo eine Leerzeile einen neuen Absatz einleitet).

Das Dokument betrachten

Bevor wir tiefer in HTML eintauchen, wollen wir Ihnen zeigen, wie Sie Ihr erstes Hypertext-Kunstwerk anschauen können. Die meisten WWW-Browser verfügen über eine Funktion zum Betrachten lokaler Dokumente. Unter NCSA Mosaic beispielsweise können Sie unter dem Punkt Open Local im Menü File eine HTML-Datei anschauen. Andere Browser, etwa Lynx, kennen ähnliche Funktionen. Sie sollten Ihr HTML-Dokument zuerst abspeichern (z.B. in der Datei beispiel.html ), bevor Sie es mit Ihrem WWW-Browser betrachten.

Wenn wir unser Beispieldokument mit NCSA Mosaic anschauen, sieht das Ergebnis aus wie Abbildung 7--9. . Wie Sie sehen, erledigt Mosaic die eigentliche »Textformatierung« für Sie -- Sie müssen das Dokument nur erstellen und in Ihren Web-Browser laden.

Abbildung 7-9. Beispiel-HTML-Dokument, mit Mosaic angezeigt

Es ist nicht weiter schwierig, Ihre neuen HTML-Dokumente über das Web anzubieten. Wir gehen davon aus, daß Sie httpd so konfiguriert haben, wie wir das im vorhergehenden Abschnitt beschrieben haben. Legen Sie die HTML-Dateien dann im httpd -Verzeichnis DocumentRoot ab (in unserem Beispiel haben wir /usr/local/html benutzt).

Wenn Sie das Dokument als /usr/local/html/beispiel.html abgelegt und auf Ihrem System den httpd gestartet haben, kann anschließend jedermann auf dieses Dokument zugreifen, indem er in seinem WWW-Browser den URL

http://www.veggie.org/beispiel.html

aufruft. (6)

Beachten Sie, daß Sie innerhalb des DocumentRoot-Verzeichnisses auch Unterverzeichnisse einrichten und symbolische Links anlegen können. Alle an Ihr System adressierten HTTP-URLs greifen auf Dateinamen zu, die relativ zu DocumentRoot gesucht werden. Wenn wir also das Verzeichnis /usr/local/html/my-docs einrichten und beispiel.html dort ablegen, lautet der entsprechende URL:

http://www.veggie.org/my-docs/beispiel.html
Die Benutzung von Links

Damit sie auf andere Dokumente oder andere Abschnitte desselben Dokuments verweisen können, enthalten die HTML-Quelltexte Links (Verknüpfungen, Verweise). Ein Beispiel:

<p> You can find more information about HTML
<a href="http://info.cern.ch/hypertext/WWW/MarkUp/MarkUp.html"> here
</a>.

Innerhalb von Mosaic wird dieser Satz aussehen wie in Abbildung 7--10. gezeigt.

Abbildung 7-10. Mosaic zeigt einen Link an

Das Wort »here« ist hervorgehoben, weil es ein Link ist. Nach einem Mausklick auf diesen Link wird Mosaic das Dokument darstellen, auf das der URL

http://info.cern.ch/hypertext/WWW/MarkUp/MarkUp.html

verweist. Das Element <a> bezeichnet man als Anker -- das ist ein Link, der an eine bestimmte Textstelle gebunden ist (in diesem Fall das Wort »here«).

Man bezeichnet dies als absoluten Link , weil der URL den kompletten Rechner- und Pfadnamen enthält. Für Dokumente auf demselben Rechner sollten Sie relative Links benutzen, etwa:

<p> You can also access the <a href="gardening.html">Vegetable
Gardening
   Home Page</a>.

Die URLs in relativen Links werden relativ zu dem Verzeichnis verstanden, in dem das aktuelle HTML-Dokument steht. Es wird angenommen, daß der URL-Typ (z.B. http , ftp usw.) derselbe ist, wie der URL-Typ des aktuellen Dokuments. Wenn der o.a. Text also im Dokument:

http://www.veggie.org/my-docs/beispiel.html

steht, verweist der Link auf den URL:

http://www.veggie.org/my-docs/gardening.html

Wenn der Dateiname in einem relativen Link mit einem Schrägstrich beginnt ( / ) wie in:

Click <a href="/info/veggie.html">here</a> for more information.

dann wird der URL relativ zum Verzeichnis DocumentRoot aufgefaßt. In diesem Beispiel entspricht der URL also:

http://www.veggie.org/info/veggie.html

Relative Links können auch auf das übergeordnete Verzeichnis verweisen:

<a href="../plants/plants.html">Here</a> is more about plants.

Die Benutzung von relativen Links ist für zusammengehörende Dokumente äußerst wichtig. Sie haben damit die Möglichkeit, die Verzeichnishierarchie Ihrer HTML-Dateien zu ändern, ohne daß dabei alle Ihre Links ungültig werden. Für den Zugriff auf unverknüpfte einzelne Dokumente auf demselben System empfiehlt sich allerdings die Benutzung von absoluten Links; in diesem Fall hängt die Position eines Dokuments nicht von der Position anderer Dokumente auf demselben System ab.

Sie können Links auch auf andere Abschnitte desselben Textes verweisen lassen. Ein Beispiel:

See <a href="#Genetics">below</a> for information on
genetically-engineered vegetables.

Der Link verweist auf eine Stelle in demselben Dokument, die folgendermaßen markiert ist:

<a name="Genetics">
<h1>Genetically Engineered Vegetables: Our Specialty</h1>
</a>

In diesem Fall benutzt der Anker die Option name statt href, und der Ankertext enthält eine komplette Überschrift. Es muß nicht sein, daß Sie Überschriften als name-Anker benutzen, aber in der Regel ist das eine gute Idee, wenn Sie auf andere »Abschnitte« desselben Textes verweisen möchten. Wenn ein Benutzer beispielsweise den Link anwählt, der zu diesem Anker gehört, bekommt er am oberen Rand des Dokumentenfenster von Mosaic folgende Abschnittüberschrift zu sehen:

Genetically Engineered Vegetables: Our Specialty

Links können auch auf bestimmte Stellen in anderen Dokumenten verweisen. Ein Beispiel:

<a href="tomatoes.html#Genetics">Here</a> is more information on
our mutated tomatoes.

zeigt auf den Abschnitt im Dokument tomatoes.html , der mit <a name="Genetics"> markiert ist.

Vielleicht haben Sie schon erraten, daß Links nicht nur auf andere HTML-Dokumente verweisen können. Links können außerdem auf Bild- und Sound-Dateien zeigen und auf PostScript-Dateien ebenso wie auf andere URL-Typen wie FTP-, Gopher- oder WAIS-Dienste. Kurz gesagt: Jeder gültige URL kann als Link benutzt werden. Ein Beispiel:

Click <a href="ftp://ftp.veggie.org/pub/">here</a> to access our
anonymous FTP archive.

ist ein Verweis auf den angegebenen FTP-URL.

Ein Exkurs: MIME-Typen

Beim Verweis auf Bilder und Sounds hängt es von den Fähigkeiten des Clients ab, welche Bild- und Soundtypen dargestellt werden können. Wenn Sie beispielsweise auf den URL

http://www.veggie.org/pics/artichoke.gif

zugreifen, ist es die Aufgabe des WWW-Clients, ein eigenständiges Programm aufzurufen, das dieses Bild anzeigt. Gleichzeitig muß der Server, der das Bild anbietet, in der Lage sein, auch das Format der Bilddatei an den Client zu übermitteln. Die Datei mime.types im Konfigurationsverzeichnis von httpd wird für diesen Zweck benutzt. Diese Datei enthält Zeilen wie beispielsweise:

image/gif                      gif
image/jpeg                     jpeg jpg jpe
audio/basic                    au snd
application/postscript         ai eps ps
text/html                      html
text/plain                     txt

Das erste Feld in jeder Zeile enthält den Namen des jeweiligen MIME-Typs. MIME ist die Abkürzung von Multipurpose Internet Mail Extensions (Erweiterungen für viele Zwecke zu Internet-Mail). Wie der Name schon andeutet, wurde MIME ursprünglich für den Einsatz mit E-Mail entwickelt. Es ist ein Standard, der es ermöglicht, auch solche Dokumente als E-Mail zu verschicken, die andere Datentypen als einfachen ASCII-Text enthalten.

Die restlichen Felder enthalten die Dateinamensuffixe, die zu dem jeweiligen MIME-Typ passen. In diesem Beispiel werden alle Dateien, deren Name auf .gif endet, wie Dokumente vom Typ image/gif behandelt.

Wenn ein Client (etwa NCSA Mosaic) ein Dokument empfängt, bekommt er vom Server gleichzeitig Informationen über den entsprechenden MIME-Typ. Auf diesem Wege erfährt der Client, wie er das Dokument handhaben muß. Bei text/html-Dokumenten wird NCSA Mosaic einfach den HTML-Quelltext formatieren und im Dokumentenfenster anzeigen. Für image/gif-Dokumente ruft Mosaic einen eigenständigen Bildbetrachter wie z.B. xv auf. Dokumente vom Typ application/postscript werden, auf den meisten UNIX-Systemen, mit Hilfe von Ghostview angezeigt.

Der Web-Client bestimmt, wie verschiedene MIME-Typen gehandhabt werden. NCSA Mosaic enthält eine Option um festzulegen, mit welchem Programm die Dokumente eines bestimmten Typs bearbeitet werden.

Dies wird mit der Anweisung DefaultType in der Datei srm.conf erledigt. Wir haben dort eingetragen:

DefaultType   text/plain

Wenn der Server nicht in der Lage ist, den Typ eines Dokuments festzustellen, wird er die Voreinstellung text/plain benutzen, die für unformatierte Textdateien gedacht ist. NCSA Mosaic zeigt solche Textdateien mit einem Sperrschrift-Font im Dokumentenfenster an.

Eingebettete Grafik

Eine der interessanten Fähigkeiten von HTML ist das Einbetten von Grafik direkt im Dokument. Dies wird mit dem Element <img> bewerkstelligt:

<img src="pics/logo.gif"> Our stylish logo, in full color.

Damit plazieren Sie das Bild, auf das der relative URL pics/logo.gif verweist, im Dokument, wie es Abbildung 7--11. zeigt. Sie können mit <img> auch absolute URLs benutzen.

Abbildung 7-11. Eingebettete Grafik, von Mosaic angezeigt

Theoretisch kann das Element <img> zum Einbetten von »beliebigen« Dokumenten in das aktuelle Dokument benutzt werden. In der Praxis wird es allerdings meistens für kleine Grafiken benutzt. Es hängt von den verschiedenen Browsern ab, welche Grafikformate dargestellt werden können. Bilder in den Formaten GIF und X-Bitmap scheinen überall akzeptiert zu werden. Beachten Sie aber auch, daß nicht alle Clients in der Lage sind, eingebettete Grafik darzustellen -- in erster Linie gilt dies für textbasierte Clients wie Lynx.

Sie können <img> auch in einem Anker benutzen, etwa so:

<a href="zucchini.html">
<img src="pics/zuke.gif"> Zucchinis (also known as Courgettes)
</a>

Sowohl Bild als auch Text sind Bestandteil des Ankers, wie in Abbildung 7--12. zu sehen. Ein Mausklick auf eine der beiden Komponenten ruft den URL zucchini.html auf.

Abbildung 7-12. Grafik und Link, von Mosaic dargestellt

Weitere Eigenschaften von HTML

Offensichtlich brauchen Sie noch andere Elemente als Überschriften, Links und eingebettete Grafik, um anspruchsvoll formatierte HTML-Dokumente zu erstellen. HTML bietet viele andere Möglichkeiten der Textformatierung.

Mit dem Element <ol> können Sie eine numerierte Liste anlegen, wobei jedes Listenelement mit <li> gekennzeichnet wird:

Zucchini haben folgende angenehme Eigenschaften:
<ol>
<li> Sie sind grün.
<li> Sie sind knackig.
<li> Sie schmecken großartig im Salat.
</ol>

Nach der Formatierung durch Mosaic wird diese Liste so aussehen wie in Abbildung 7--13. gezeigt.

----------------------------------------------------
| Zucchini haben folgende angenehme Eigenschaften: | 
| 1.  Sie sind grün                                |      
| 2.  Sie sind knackig                             | 
| 3.  Sie schmecken großartig im Salat             |       
----------------------------------------------------
Abbildung 7-13: Von Mosaic angezeigte Liste

Eine Liste ohne Numerierung erstellen Sie mit <ul> statt <ol>. In unnumerierten Listen sind die einzelnen Listenelemente mit einem grafischen Zeichen statt der fortlaufenden Zahlen markiert.

Sie können Listen auch verschachteln. Wenn unnumerierte Listen verschachtelt werden, erscheint in der Regel auf jeder neuen Ebene ein anderes grafisches Zeichen, wie in Abbildung 7--14. zu sehen ist. Der Quelltext zu dieser Liste sieht so aus:

Hier ein Beispiel für eine eingerückte Liste.
<ul>
<li> Der erste Punkt.
<li> Der zweite Punkt.
     <ul>
     <li> Der erste eingerückte Punkt.
     <li> Noch ein Punkt.
          <ul>
          <li> Die nächste Stufe des Einrückens.
          </ul>
     </ul>
</ul>

Der Text ist hier nur eingerückt, um den Quelltext übersichtlicher zu gestalten; benutzen Sie die Art der Einrückung, die Ihnen am meisten zusagt.

-------------------------------------------------
| Hier ein Beispiel für eine eingerückte Liste. |
| a  Der erste Punkt                            | 
| a  Der zweite Punkt                           | 
|   b  Der erste eingerückte Punkt          	|     
|   b  Noch ein Punkt                           |
|     c  Die nächste Stufe des Einrückens       |
------------------------------------------------
Abbildung 7-14: Verschachtelte Liste, von Mosaic angezeigt

Es gibt verschiedene Methoden, Text hervorzuheben. Wir haben <em> bereits kennengelernt, mit dem Texte normalerweise kurisv dargestellt werden. Beachten Sie, daß es allein vom Client abhängt, wie diese Formatierungen dargestellt werden. Die am häufigsten gebrauchten Markierungen für hervorgehobenen Text sind:

<em>
Hervorgehobener Text, meistens kursiv dargestellt.
<code>
Programmquellcode, meistens in einer Sperrschrift dargestellt.
<samp>
Beispiele für Programmausgaben, meist ebenfalls in Sperrschrift.
<kbd>
Benutzereingaben über die Tastatur.
<strong>
Starke Hervorhebung, meistens in Fettdruck dargestellt.

Hier ein Beispiel, in dem mehrere dieser Elemente benutzt werden:

<p> <em>Erstaunlich</em>, dachte Sie. Mit dem Befehl
<kbd>find</kbd> kann man 
fast <strong>alles</strong> machen!

Abbildung 7--15. zeigt, wie Mosaic das darstellt.

Abbildung 7-15. Fonts, von Mosaic angezeigt

Beachten Sie, daß <code>, <samp> und <kbd> normalerweise in einer Sperrschrift (Schreibmaschinenschrift) angezeigt werden. Es ist allerdings wichtig, zwischen den verschiedenen logischen Typen der Hervorhebung in Dokumenten zu unterscheiden. So können wir nämlich die Schrifttype ändern, mit der <kbd>-Texte dargestellt werden (beispielsweise auf einen kursiven Schrifttyp), ohne daß gleichzeitig <code> und <samp> geändert werden müssen.

Für den Fall, daß Sie den Schrifttyp direkt bestimmen möchten, kennt HTML auch die Markierungen <b>, <i> und <tt>, um Fettdruck, kursive Schrift bzw. Sperrschrift einzuschalten.

Mit dem Element <pre> haben Sie die Möglichkeit, »vorformatierten« oder »1:1« formatierten Text in einem HTML-Dokument unterzubringen. Ein Beispiel:

So sieht der Quellcode von <code>hello.c</code> aus.
<pre>
#include <stdio.h>

void main() {
  printf("Hello, world!");
}

</pre>

Dieser Text wird so dargestellt, wie in Abbildung 7--16. gezeigt.

-------------------------------------------
| So sieht der Quellcode von hello.c aus. |
| #include <stdio.h>		  	  |
|					  |
| void main() {				  |
|    printf("Hello, world!");		  |
| }                             	  |          
-------------------------------------------
Abbildung 7-16: Vorformatierter Text, von Mosaic angezeigt

Beachten Sie die Benutzung von < und >, um < und > darstellen zu lassen. Sie müssen diese Codes so eingeben, weil die Zeichen < und > innerhalb von HTML-Dokumenten eine besondere Bedeutung haben; dies gilt auch innerhalb von <pre>-Elementen.

Weitere Codes mit besonderer Bedeutung sind:

&quot;
Erzeugt das doppelte Anführungszeichen: "
&amp;
Erzeugt das Kaufmanns-Und: &
&eacute;
Erzeugt das e mit steigendem Akzent: é
&ouml;
Erzeugt das Umlaut- o : ö

In der kompletten HTML-Spezifikation unter:

http://info.cern.ch/hypertext/WWW/MarkUp/MarkUp.html

finden Sie alle vorhandenen Codes aufgelistet.

Sie werden in HTML-Dokumenten häufig eine waagerechte Linie sehen, die die Seite optisch gliedert. Diese Linie ziehen Sie mit dem Element <hr>, etwa so:

All right, I dare you to cross this line:
<p><hr>
<p> All right, I dare you to cross this one:
<p><hr>

Schließlich wird am Ende von HTML-Dokumenten häufig das Element <address> benutzt, um den Namen und die Adresse der Person zu hinterlegen, die für diese Seite verantwortlich ist. Ein Beispiel:

<p><hr><p>
<address>Mr. P. Head, potatoe@veggie.org</address>

Viele Leute verknüpfen den Namen innerhalb der Adresse mit ihrer persönlichen Leitseite.

Wo Sie weitere Informationen finden

Es gibt im Web noch viele andere Quellen für Informationen zu HTML -- eigentlich stecken Sie mittendrin. Der Punkt On HTML... aus dem Help -Menü von NCSA Mosaic bringt Sie zu der Einführung, die wir weiter oben schon erwähnt haben. Auf dieser Seite finden Sie auch Links zu weiteren HTML-Informationen.

Innerhalb von Mosaic können Sie den HTML-Quelltext beliebiger Web-Dokumente betrachten. Wählen Sie im Menü File den Punkt View Source , während Sie das betreffende Dokument lesen. Damit erhalten Sie einen Einblick darein, wie diese Seite erstellt wurde. Der Browser Lynx kennt eine ähnliche Option, die Sie mit dem Backslash-Befehl (\) aktivieren.

Interaktive Formulare erstellen

Wir haben bereits erwähnt, daß Mosaic und httpd von NCSA auch interaktive Formulare unterstützen; diese Formulare ermöglichen Eingaben von Seiten des Benutzers (in Form von Texteingabefeldern, Schaltflächen, Menüs usw.) an ein Skript, das vom Server ausgeführt wird. Ein Beispiel: Ein interaktives Formular könnte ein Textfeld enthalten, in das der Benutzername eingegeben werden soll. Wenn dieses Formular abgeschickt wird, ruft der Server ein finger -Skript auf und präsentiert das Ergebnis als HTML-Dokument.

Es hängt von den Fähigkeiten sowohl des WWW-Clients als auch des httpd -Servers ab, ob Formulare benutzt werden können. Nicht alle Web-Clients können Formulare darstellen; Sie brauchen NCSA Mosaic in der Version 2.0 oder höher. Außerdem können nicht alle Implementierungen des httpd mit Formularen umgehen. Wir empfehlen den NCSA- httpd , den wir weiter oben im Kapitel besprochen haben; darin finden Sie umfangreiche Unterstützung für Formulare.

Das Paradebeispiel für ein interaktives Formular ist eines, mit dem ein Benutzer E-Mail an den Urheber des Formulars schicken kann. In diesem Abschnitt wollen wir genau dieses Beispiel benutzen um zu zeigen, wie man Formulare erstellt und wie die Server-Skripts aussehen, die von den Formularen ausgeführt werden.

Das HTML-Formular

Der erste Schritt auf dem Weg zu einem Formular ist die Erstellung eines HTML-Dokuments, das genau wie das Formular aussieht. In solchen HTML-Seiten sind <form>-Elemente enthalten, die wiederum verschiedene andere Elemente in Form von Schaltflächen, Texteingabefeldern usw. enthalten.

Eine ausführliche Besprechung der HTML-Formulare finden Sie unter dem URL:

http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/fill-out-forms/overview.html

Hier wollen wir einen Ausschnitt dessen darstellen, was Formulare leisten können. Ein ausführliches Beispiel für die Benutzung von Formularen findet Sich unter:

http://www.cm.cf.ac.uk/Movies/moviequery.html

Sie finden dort eine umfassende Datenbank mit Informationen zu mehr als 30.000 Filmen vor und können nach Titeln, Sparten, Schauspielern, Regisseuren usw. suchen.

Hier zeigen wir das HTML-Dokument für unser einfaches E-Mail-Formular:

1 Ye Olde Generic Mail Form
2  <h1>Send mail to me</h1>
3  <p>You can use this form to send me mail.
4
5  <p><hr><p>
6  <form method="POST" action="/cgi-bin/mailer.pl">
7  <input name="from"> Your email address<p>
8  <input name="subject"> Subject<p>
9  <input type=hidden name="to" value="mdw@veggie.org">
10 <hr>
11 Enter message body below:<br>
12 <hr>
13 <textarea name="body" cols=60 rows=12></textarea><p>
14 <hr>
15 <input type=submit value="Send mail"><p>
16 </form>

Wenn wir uns dieses Formular mit NCSA Mosaic anschauen, sieht es aus wie Abbildung 7--17.

Abbildung 7-17. Formular, von Mosaic angezeigt

Wie Sie sehen, haben wir in diesem Formular einige der neuen Möglichkeiten von HTML benutzt. Lassen Sie uns die Datei schrittweise untersuchen und die Neuheiten besprechen.

In Zeile 6 steht das Element <form>, welches das ganze Formular umschließt. Es gibt verschiedene Optionen und Attribute zu <form>.

Das Attribut method bestimmt, auf welche Weise Informationen aus dem Formular an das Server-Skript geschickt werden. Gültige Werte für die Methode sind GET und POST. Mit GET übergeben Sie Informationen an das Skript in Form von Befehlszeilenargumenten; mit POST richten Sie die Informationen an die Standardeingabe des Skripts. Diese Option wirkt sich lediglich darauf aus, wie Sie das Server-Skript schreiben; aus verschiedenen Gründen empfehlen wir dringend, die Methode POST zu benutzen.

Mit dem Attribut action geben Sie den URL des Skripts an, das dieses Formular auf dem Server aufrufen wird. Erinnern Sie sich daran, daß CGI-Skripts in der Regel im Unterverzeichnis cgi-bin des ServerRoot-Verzeichnisses von httpd stehen.

In diesem Beispiel lassen wir das Skript:

/cgi-bin/mailer.pl

ausführen, wenn das Formular abgeschickt wird. Im nächsten Abschnitt beschreiben wir, wie dieses Skript aussehen muß.

In den Zeilen 7 bis 9 benutzen wir das Element <input>. Dies ist das Element, das in Formularen am häufigsten auftaucht -- es bezeichnet eine Möglichkeit der Eingabe wie z.B. ein Textfeld, eine Schaltfläche oder eine Checkbox. Es gibt verschiedene Attribute zu <input>.

Das Attribut name ist eine eindeutige Zeichenfolge, die dieses Element gegenüber dem Server-Skript identifiziert. Das Attribut type bezeichnet den Typ des Eingabeelements. Hier sind die gültigen Werte text, radio, checkbox, password, submit, reset oder hidden. Wenn kein type angegeben wird (wie in den Zeilen 7 und 8), wird die Voreinstellung text benutzt. Das Attribut value bestimmt den Wert, der für diese Eingabe voreingestellt werden soll.

input kennt noch verschiedene andere Attribute; damit bestimmen Sie beispielsweise die maximale Länge der Eingabe in einem Textfeld usw.

Die Zeilen 7 und 8 definieren Eingabefelder mit den Titeln "from" und "subject", beide vom Typ text. In diese Felder werden die E-Mail-Adresse des Absenders und der Betreff der Nachricht eingetragen.

In Zeile 9 definieren wir das Element hidden mit dem Namen "to"; damit bestimmen wir die E-Mail-Adresse, an die diese Mail geschickt werden soll. Mit diesem Trick können wir innerhalb des HTML-Formulars selbst die E-Mail-Adresse des Empfängers angeben. Anderenfalls müßten wir die Empfängeradresse innerhalb des Server-Skripts ( mailer.pl ) definieren; dann müßte jeder Benutzer, der das Mail-Formular benutzen möchte, eine eigene Kopie des Skripts haben. Auf diese Weise erreichen wir, daß alle Benutzer des Systems mit diesem Skript arbeiten können, solange sie die eigene E-Mail-Adresse im Feld "to" angeben. Die Gründe dafür werden wir im nächsten Abschnitt darlegen, wenn wir das Skript mailer.pl selbst besprechen.

In Zeile 13 benutzen wir das Element <textarea>. Dieses Element bezeichnet ein mehrzeiliges Texteingabefeld mit Laufleisten am rechten und unteren Rand. Wie bei <input> haben wir auch hier das Attribut name benutzt, um dem Element einen Namen zuzuweisen. Mit den Attributen cols und rows legen wir die Größe dieses Textbereichs fest.

Beachten Sie, daß <textarea> im Gegensatz zu <input> auch die entsprechende Endmarkierung </textarea> in derselben Zeile benutzt. Jeglicher Text, der zwischen <textarea> und </textarea> steht, wird als feste Eingabe in dieses Eingabefeld benutzt.

In Zeile 15 benutzen wir ein weiteres <input>-Element, diesmal vom Typ submit. Damit definieren wir eine Schaltfläche, die nach dem Anklicken das Formular abschickt und das zugehörige Server-Skript aufruft. Das Attribut value bezeichnet den Text, der auf der Schaltfläche angezeigt wird; in diesem Beispiel "Send mail".

In Zeile 16 schließlich beenden wir das Formular mit der Endmarkierung </form>.

Ein HTML-Dokument kann mehrere Formulare enthalten, aber die Formulare können nicht ineinander verschachtelt werden.

Das CGI-Skript schreiben

Die Skripts, die von Formularen ausgeführt werden, benutzen das Common Gateway Interface (CGI), in dem festgelegt ist, wie Daten aus dem Formular an das Skript übergeben werden. Es ist an dieser Stelle nicht wichtig, daß Sie die Details der CGI-Spezifikationen kennen; Sie sollten aber wissen, daß die Daten in Form von Name/Wert-Paaren an das Skript übergeben werden. Zur Demonstration: Wir gehen von unserem Beispielformular aus und nehmen an, daß der Benutzer die Adresse:

bsmarks@norelco.com

in das <input></literal-Feld mit dem Namen"from" eingetragen hat. Der Wert bsmarks@norelco.com wird dann bei der Übergabe an das Skript mit dem Namen "from" verknüpft.

Wir haben bereits erwähnt, daß es von der Formular-Methode abhängt, auf welche Weise diese Name/Wert-Paare an das Server-Skript übergeben werden (GET oder POST). Ganz allgemein werden die Name/Wert-Paare in folgender Form kodiert:

aktion?name=wert&name=wert&...

und entweder auf der Befehlszeile (bei Formularen mit der Methode GET) oder als Standardeingabe (bei Formularen mit der Methode POST) an das Server-Skript übergeben. Außerdem müssen bestimmte Zeichen (etwa =, & usw.) mit dem Escape-Code versehen werden, und verschiedene Environment-Variablen werden benutzt, um bestimmte Werte an das Skript zu übergeben.

Server-Skripts können in praktisch jeder Sprache geschrieben werden, etwa C, Perl oder sogar als Shell-Skripts. Da die Dekodierung der Name/Wert-Paare in einem C-Programm ziemlich qualvoll werden kann, zeigen wir statt dessen, wie ein solches Skript in Perl geschrieben wird, dessen Fähigkeiten zur Textbearbeitung für diese Aufgabe besser geeignet sind. Die httpd -Distribution vom NCSA enthält C-Quelltexte für eine Reihe von CGI-Beispiel-Skripts. Sie finden diese im Unterverzeichnis cgi-src des Servers.

Beispiel 7--2 zeigt das Perl-Skript mailer.pl .

Beispiel 7-2. CGI-Skript zur Analyse von E-Mail-Nachrichten

#!/usr/local/bin/perl

require "cgi.pl"; # CGI-Parser-Routinen anfordern

# Formulardaten parsen
&ReadParse;

# Ausgabe-Header ausgeben (in HTML-Formular)
print STDOUT "Content-type: text/html\n\n";
print STDOUT "Mail form results
";
print STDOUT "<h1>Mail form results</h1>";

open (MAIL,"|/usr/lib/sendmail $to") ||
  die "<p>Error: Couldn't execute sendmail.\n";

print MAIL "To: $in{'to'}\n";
print MAIL "From: $in{'from'}\n";
print MAIL "subject: $in{'subject'}\n\n";
print MAIL "$in{'body'}\n";
close MAIL;

print STDOUT "<p>All right, mailed the following to
<tt>$to</tt>:\n";
print STDOUT "<p><pre>";
print STDOUT "To: $in{'to'}\n";
print STDOUT "From: $in{'from'}\n";
print STDOUT "subject: $in{'subject'}\n\n";
print STDOUT "$in{'body'}\n";
print STDOUT "</pre>";

Falls Sie Perl-Neuling sind, schauen Sie sich die Einführung in Kapitel 6, Programmierung unter Linux an. Sie müssen aber nicht mit Perl hexen können, um diese Code zu verstehen.

Dieses Skript lädt zuerst die Routinen in cgi.pl (siehe unten), darunter ReadParse. Diese Subroutine liest die Name/Wert-Paare aus dem Formular und schreibt sie in das assoziative Array %in. (Jedes name = wert -Paar wird außerdem in das lineare Array @in geschrieben.) Wenn wir beispielsweise den Wert des "from"-Eingabefeldes abfragen möchten, können wir auf die Variable:

$in{'from'}

zugreifen.

Nach dem Aufruf vonReadParse gibt mailer.pl mehrere Strings auf die Standardausgabe. Beachten Sie, daß CGI-Skripts ihre Daten im HTML-Format ausgeben (obwohl das nicht unbedingt sein muß). Die erste Zeile, die das Skript ausgibt, sollte so aussehen:

Content-type: text/html

Damit erfährt der Server den MIME-Typ der Daten aus dem Skript.

Das Skript öffnet anschließend eine Pipe nach /usr/lib/sendmail , das die Mail verschicken soll. (Falls Sie auf Ihrem System ein anderes Mail-Programm als sendmail benutzen, muß diese Stelle angepaßt werden.) Wir leiten die Nachricht dann an sendmail , nachdem wir einen Header vorangestellt haben, der die Felder To:, From: und Subject: enthält, die wir aus dem Formular gewonnen haben.

Nachdem wir die Pipe zu sendmail geschlossen haben, geben wir die gerade übertragene Nachricht noch auf die Standardausgabe -- als Hinweis für den Benutzer, daß die Nachricht korrekt verschickt wurde.

Die Datei cgi.pl enthält die ReadParse-Routine, die wir in Beispiel 7--3. zeigen.

Beispiel 7-3 CGI-Skript zum Parsen der WWW-Formulare
#!/usr/local/bin/perl

# Routines for parsing CGI forms data within Perl
# Derived from code by Steven E. Brenner, <S.E.Brenner@bioc.cam.ac.uk>
# Copyright 1993 Steven E. Brenner
# Permission granted to use and modify this library so long as the
# copyright above is maintained, modifications are documented, and
# credit is given for any use of the library.
# Für die deutsche Ausgabe des Buches haben wir die folgenden Kommentare
# übersetzt.

# ReadParse
# Liest GET- oder POST-Daten ein, konvertiert sie zu ASCII und schreibt
# je ein Name=Wert-Paar in jedes Element der Liste "@in";
# erzeugt außerdem die Name/Wert-Paare in %in und benutzt '\0', um
# Mehrfacheinträge zu trennen.

# Wenn ReadParse einen Parameter wie z.B. *cgi_input empfängt, werden
# Informationen dort statt in $in, @in und %in abgelegt.

sub ReadParse {
if (@_) {
local (*in) = @_;
}

local ($i, $loc, $key, $val);

# Text einlesen
if ($ENV{'REQUEST_METHOD'} eq "GET") {
$in = $ENV{'QUERY_STRING'};
} elsif ($ENV{'REQUEST_METHOD'} eq "POST") {
for ($i = 0; $i < $ENV{'CONTENT_LENGTH'}; $i++) {
$in .= getc;
}
}

@in = split(/&/,$in);

foreach $i (0 .. $#in) {
# Pluszeichen zu Leerstellen wandeln
$in[$i] =~ s/\+/ /g;

# %XX von hexadezimal zu alphanumerisch wandeln
$in[$i] =~ s/%(..)/pack("c",hex($1))/ge;

# Name und Wert isolieren
$loc = index($in[$i],"=");
$key = substr($in[$i],0,$loc);
$val = substr($in[$i],$loc+1);
$in{$key} .= '\0' if (defined($in{$key})); # \0 trennt Mehrfacheinträge
$in{$key} .= $val;
}
return 1;

}
1; # wahr zurückliefern

Dieser Code behandelt die banalen Aspekte beim Verarbeiten der Eingaben aus Formularen -- das Trennen der Name/Wert-Paare, das Speichern derselben in Arrays, die Wandlung von Sonderzeichen usw. Sie können diesen Code sinnvoll einsetzen, ohne ihn vollständig zu verstehen.

Denken Sie immer daran, daß bei der Benutzung von HTML-Formularen auch die Systemsicherheit eine Rolle spielt. Stellen Sie sicher, daß Ihre Skripts nicht benutzt werden können, um auf Ihrem System nichtautorisierte Prozesse zu starten. Wenn Ihre Server-Skripts die CPU stark beanspruchen, sollten Sie den Zugriff vielleicht einschränken, um das System nicht zu überlasten. Ganz allgemein gesagt: Sie sollten wissen, was Sie tun, wenn Sie auf Ihrem WWW-Server Formulare anbieten.


Fußnoten

(4)
Falls Sie Fragen hierzu haben, sollten Sie die FAQ-Datei zur Lizensierung von NCSA Mosaic per FTP von ftp.ncsa.uiuc.edu als Mosaic/LICENSING.FAQ besorgen.
(5)
HTML ist eigentlich eine SGML-DTD (Standard Generalized Markup Language; Document Type Definition). SGML definiert die Regeln für die <markierung>...</markierung>-Paare. Lesen Sie auch den Abschnitt »Multimedia unter Linux« in Kapitel 5.
(6)
Natürlich mit dem Namen Ihres eigenen Rechners statt www.veggie.org.


Inhaltsverzeichnis Vorherige Abschnitt Nächste Abschnitt