Am Beispiel der Implementierung eines Web-Gästebuchs werden die Grundlagen der Programmierung mit dem Common Gateway Interface gezeigt. von Edward R. Smith Mit der Verfügbarkeit des Common Gateway Interface (CGI) im Internet Connection/400 HTTP Server wird die AS/400 zur Plattform für die Entwicklung interaktiver Web-Anwendungen. CGI ist ein Standardprotokoll für Web-Server, das die direkte Interaktion zwischen Server-Programmen (z.B. RPG- oder CL-Programmen) und einem Web-Browser ermöglicht.
Die Load ’n‘ go Datei zu diesem Artikel finden Sie hier.
Mit dem CGI der AS/400 können CGI-Anwendungsprogramme (sogenannte Scripts) in RPG statt in anderen Sprachen wie C oder Perl geschrieben werden. Mit etwas Übung kann man vorhandene RPG-Kenntnisse zum Erstellen von CGI-Anwendungen wie der hier vorgestellten einsetzen. Die RPG-CGI-Programmierung bietet zahlreiche Möglichkeiten, Kunden oder Anwender über das Web zu erreichen, aber allgemein werden in der CGI-Programmierung vier Funktionen am häufigsten genutzt: – das Aufnehmen von Formulardaten – das Abrufen von CGI-Umgebungsvariablen (z.B. einer Suchzeichenfolge oder einer Browser-IP-Adresse) – das Umleiten eines Browsers zu einer anderen Web-Seite – das Generieren von HTML-Inhalten zur direkten Anzeige in einem Browser Eine einfache Anwendung demonstriert die erste und die dritte dieser Funktionen (Formulardaten-Aufnahme und Browser-Navigation). Diese Anwendung ist ein Gästebuch, das Namen, Adressen und Kommentare der Besucher einer Web-Site aufzeichnet. Anhand dieses CGI-Beispielprogramms wird gezeigt, wie man Daten aus einem Web-Eingabeformular liest und in eine AS/400-Datenbankdatei überträgt, und wie man einen Browser zu einer anderen Web-Seite weiterleitet. Die im Beispielprogramm angewendeten Verfahren basieren auf den HTTP-Funktionen von IBMs HTTP-Server und können für fast alle Anwendungen eingesetzt werden, die Benutzerdaten in Datenbankdateien speichern.
Die Gästebuch-Anwendung wird gestartet, wenn ein Web-Anwender auf das Hypertext-Link klickt, das das Formular für den Eintrag im Gästebuch aufruft (Abbildung 1). Nachdem er Name und Anschrift in die Felder des Formulars eingetragen hat, klickt der Benutzer auf den Button zum Absenden der Eingaben, der mit diesen Daten ein CL-Programm aufruft, das im HTML-Code des Formulars angegeben wurde. Die Daten werden über die Methode »standard input« an das Programm übergeben. (Standard input und standard output sind Methoden, die ein CGI-Anwendungsprogramm verwendet, um Daten über die Tastatur zu empfangen und auf dem Bildschirm auszugeben.) Ein RPG-CGI-Programm übernimmt die Daten, paßt sie an die AS/400-Datenbankfelder an, schreibt einen Satz in die Datenbankdatei und leitet den Browser an die »Danke«-Seite weiter. Um keine leeren Sätze in die Datei zu schreiben, prüft das RPG-Programm, ob das Namensfeld und andere obligatorische Felder ausgefüllt wurden. Sind die Felder leer, so wird der Browser zur Fehlerseite weitergeleitet, die erläutert, welche Angaben fehlen.
Zunächst ist zu klären, wo die Objekte (die HTML-Datei und die CGI-Programme) gespeichert werden, und wie der Zugriff darauf ermöglicht werden soll. Die HTML-Dateien der Gästebuch-Anwendung sind im IFS-Verzeichnis GBK gespeichert und die CL-und RPG-Programme in der Bibliothek CGIBIN. Bevor ein AS/400-RPG-Programm mit HTML gestartet werden kann, muß dieses Programm über HTTP-Server-Direktiven freigegeben werden, die mit dem Befehl
WRKHTTPCFG (Mit HTTP-Konfiguration arbeiten) erfaßt werden. Diese Direktiven sind die Bewacher der ausführbaren AS/400-Programme und als solche eine wichtige Sicherheitskomponente des Web-Servers. (Weitere Informationen über Direktiven finden Sie in »Sicherheit für die InternetConnection/400« in Heft 1/97, Seite 36.) Die HTTP-Konfigurations-Direktiven mit denen einem Browser der Zugriff auf die Gästebuch-Anwendung ermöglicht wird, lauten: MAP /GBK/* /gbk/* MAP /CGIBIN/* /cgibin/* ENABLE POST PASS /gbk/* EXEC /cgibin/* /QSYS.LIB/CGIBIN.LIB/* Die beiden ersten MAP-Direktiven werden wegen der unterschiedlichen Handhabung der Groß-/Kleinschreibung in OS/400 und HTML benötigt. Die AS/400-Dateisysteme mit Ausnahme von QOpenSys unterscheiden zwar nicht zwischen Groß- und Kleinschreibung, aber HTML und damit auch HTTP-Konfigurationsdirektiven. MAP-Direktiven lösen dieses Problem, indem sie Kleinbuchstaben in Großbuchstaben umsetzen.
Die beiden MAP-Direktiven stellen sicher, daß die nachfolgenden, kleingeschriebenen Angaben in den PASS- und EXEC-Direktiven richtig funktionieren. Der Stern ist ein Platzhalter mit der Bedeutung »jede beliebige Zeichenfolge an dieser Position«. In der ersten MAP-Direktive bedeutet der Stern z.B. »übersetze alles, das mit /GBK/ beginnt, so daß es mit /gbk/ beginnt«. Die ENABLE-Direktive erlaubt es, die Methode POST für Client-Anforderungen aus jedem HTML-Formular zu verwenden, das der Server bereitstellt. Die Methode POST wird zur Verarbeitung von Eingabe-Formularen verwendet. Die Direktiven PASS und EXEC sind die Wachposten, die kontrollieren, auf welche Dateien und Programme vom Web aus zugegriffen werden kann. Die dargestellte PASS-Direktive erlaubt den Zugriff auf alle Datenbankdateien im Verzeichnis GBK, und die EXEC-Direktive ermöglicht die Ausführung aller Programme in der Bibliothek CGIBIN.
Wer verhindern will, daß Gästebuch-Anwender auf AS/400-Daten zugreifen, verwendet Überschreibungen und qualifizierte Objektnamen in einem CL-Frontend-Programm, um Dateien und andere Objekte in Bibliotheken zu speichern, auf die ein Web-Browser nicht direkt zugreifen kann. (Das kurz vorgestellte Programm GBKCL arbeitet so, weil die Bibliothek CGIBIN nicht in der Bibliotheksliste des Servers steht.) Wie immer unter OS/400, haben Objekt- und Benutzerberechtigungen das letzte Wort in Sicherheitsfragen. HTTP-Anforderungen werden unter dem Benutzerprofil QTMHHTTP ausgeführt, und CGI-Programme laufen unter dem Benutzerprofil QTMHHTP1. Die standardmäßigen Berechtigungen für den allgemeinen Objektzugriff sollten in der Regel ausreichen. Wenn auf gemeinsame Ordner zugegriffen werden soll (das gebräuchliche Speichermedium für PC-Dateien – jetzt als Verzeichnis QDLS geführt), muß das Benutzerprofil QTMHHTTP zum Systemverzeichnis hinzugefügt werden.
Der Zugriff auf die Gästebuch-Seite mit einem Browser zeigt das Eingabeformular in Abbildung 1 an. Wie in der HTML-Quelle (Abbildung 2) gezeigt, wird eine HTML-Tabelle verwendet, um die Eingabefelder darzustellen. HTML-Tabellen eröffnen mehr Möglichkeiten bei der Anordnung von Text, Listen und Eingabefeldern als einfache HTML-Anweisungen. Die meisten Eingabefelder sind vom Typ TEXT. Für das Feld COMMENT wird ein TEXTAREA-Tag benutzt, weil es mehrzeilige Texteingaben erlaubt. Mit einem CHECKBOX-Typ kann der Anwender bestimmen, ob sein Name und seine Bemerkungen in einer anderen Web-Seite angezeigt werden dürfen. Der Anwender gibt seinen Namen und seine Anschrift in die dafür vorgesehenen Felder ein, und klickt dann auf den Button »Add to Guestbook«, um den Browser folgende FORM ACTION-Anweisung ausführen zu lassen:
Sie müssen sich als Abonnent anmelden um den hier fehlenden Teil des Inhalts zu sehen. Bitte
Login für Zugriff.
Noch nicht Abonnent?
Sonderaktion nutzen.