CGI |
CGI ist eine Schnittstelle zwischen dem Webserver und einer Anwendung. Die Idee ist, dass der Server auf dem Browser Daten liefert, die nicht starr sind, sondern durch den Inhalt von Datenbanken oder anderen Applikationen gespeist sind. Dazu ist es notwendig, dass Webserver und Applikation miteinander sprechen. Das Interface hierzu ist CGI.
Die einfachste Art, von HTML aus einen Prozess auf dem Server zu starten, geht über einen HREF-Link.
<a href="http://www.server.de/cgi-bin/startmich">Starte CGI-Skript</a> |
Das Verzeichnis cgi-bin liegt typischerweise an anderer Stelle, als die HTML-Dateien für die Webpräsenz. Sie müssen Ausführungsrechte haben, sonst werden sie nicht gestartet. Der Ort des cgi-bin wird durch die Konfiguration des Webservers festgelegt.
Betrachten wir nun den angestossenen Skript, der aus Demonstrationszwecken in einfachster Shell-Sprache der Bourne-Shell gehalten ist.
#!/bin/sh echo "Content-type: text/html" echo # Inititalisierung beendet: es folgt der gesendete Text echo "Es ist gut, Sie hier zu sehen.<br>" echo "MfG, Arnold Willemer" |
Die Standardausgabe dieses Programmes wird dem Browser als Input zugesandt. Entgegen anderslautenden Gerüchten ist es durchaus nicht zwingend, Java oder Perl zu verwenden. Die beiden Sprachen tauchen aus unterschiedlichen Gründen in diesem Zusammenhang auf.
Perl ist eine Skriptsprache, die mächtige Befehle zur Stringverarbeitung besitzt und diese sind in diesem Bereich besonders hilfreich. Java ist durch die Java-Fähigkeit der Browser eine wohlbekannte Sprache im Internet-Umfeld. Warum sollte es nicht auch an dieser Stelle verwendet werden? Prinzipiell kann jede Programmiersprache verwendet werden, mit der es möglich ist, Übergabeparameter oder Environmentvariablen zu lesen, also auch C oder Shell-Skript.
Daten an den Server senden
Die typische Art, Daten an den Server zu senden, wird über
Formulare erreicht.
Zunächst einmal wird nur eine Anwendung aus dem Formular gestartet.
Das folgende HTML-Dokument wird nach Drücken
auf den Button "Start" das Programm /../cgi-bin/test02
durchstarten.
<HTML> <HEAD> <TITLE>Testseite</TITLE> </HEAD> <FORM ACTION="/../cgi-bin/test02" METHOD="POST"> <INPUT TYPE="SUBMIT" VALUE="Start"> </FORM> </BODY> </HTML> |
Die Übermittlung der Daten aus der Form-Maske an den Skript erfolgt per Standard-Eingabe, wenn als Methode so wie oben POST verwendet wird. Wenn wir folgende einfache Maske verwenden:
<FORM ACTION="/../cgi-bin/test03" METHOD="POST"> <INPUT NAME="Name" VALUE="Name" SIZE=30> <TEXTAREA Name="Adresse" ROWS=5 COLS=60> Ihre Adresse </TEXTAREA> <INPUT TYPE="RADIO" NAME="Anrede" VALUE="Herr"> <INPUT TYPE="RADIO" NAME="Anrede" VALUE="Frau"> <INPUT TYPE="SUBMIT" VALUE="Start"> </FORM> |
Die Maske wäre optisch natürlich noch durch eine Tabelle zu strukturieren und erläuternde Texte aufzupeppen. Hier soll es aber nur um den Mechanismus gehen und da kann es gar nicht schlicht genug sein.
Den empfangenden Skript haben wir durch das Lesen der Standard-Eingabe erweitert.
#!/bin/sh echo "Content-type: text/html" echo # Inititalisierung beendet: es folgt der gesendete Text read maske echo $maske |
Der Inhalt des Formulars wird also in die Environment-Variable maske gelesen und anschließend wiedergegeben. Wir finden dann auf dem Browser die Zeile
Name=Name&Adresse=Ihre+Adresse%0D%0A&Anrede=Frau
Man kann anhand der Zeile leicht erkennen, wie der Aufbau der übermittelten Daten aussieht. Die Zuordnung der Elemente hat die Struktur
Feldname=Wert
Die Eingabeelemente werden durch & getrennt. Leerzeichen in Eingabefeldern werden durch ein + ersetzt. Bei Textareas werden die Zeilen durch %0D%0A abgeschlossen.
Yves Ernst: HTML. Data Becker, 1996. Kapitel 13: Common Gateway Interface.
|
Homepage
TCP/IP |
(C) Copyright 1999, 2000 Arnold Willemer
Last modified: Thu Nov 2 19:27:26 MET 2000 |