|
|
CGI: der Server schlägt zurückCGI (Common Gateway Interface) ist eine Schnittstelle zwischen dem Webserver und einer Anwendung. Über diese Schnittstelle kann der Browser Daten an den Webserver übermitteln und der Server liefert dem Browser Daten, die nicht starr sind, sondern durch den Inhalt von Datenbanken oder anderen Applikationen erzeugt werden. Man könnte es so ausdrücken, dass ein normaler Browser zum Frontend einer Applikation wird. Dazu ist es notwendig, dass Webserver und Applikation miteinander sprechen. Wenn der Browser dynamisch erstellte Daten liefern soll, müssen auf dem Server Programme oder Skripten ablaufen. Der Server muss also auf einen Hinweis im HTML-Quelltext hin diesen Prozess starten. Das Ergebnis des gestarteten Prozesses soll normalerweise wieder auf dem Browser erscheinen. Die einfachste Art, aus HTML einen Prozess auf dem Server zu starten, kann über einen HREF-Link realisiert werden.
<A HREF="http://www.server.de/cgi-bin/startmich">Start!</A> Das Verzeichnis cgi-bin liegt typischerweise aus Sicherheitsgründen an anderer Stelle, als die HTML-Dateien für die Webpräsenz. Der Ort des Verzeichnisses cgi-bin wird durch die Konfiguration des Webservers festgelegt. In der Datei httpd.conf findet sich dazu die Zeile:
ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
Das CGI-Programm
#!/bin/sh echo "Content-type: text/html" echo # Inititalisierung beendet: es folgt der Text echo "<HTML><BODY>" echo "Es ist gut, Sie hier zu sehen.<br>" echo "MfG, Arnold Willemer" echo "</BODY></HTML>" Die Standardausgabe dieses Skripts wird vom Server dem Browser als Ergebnis seines GET-Befehls zugesandt. Wichtig ist die erste Zeile, die den Typ angibt und die darauf folgende Leerzeile, sonst zeigt der Browser nichts an. Danach wird der normale HTML-Code ausgegeben. Als CGI-Sprache eignet sich jede Programmiersprache, die den Standard Input lesen und den Standard Output schreiben kann, also fast jede Sprache. Perl hat eine besondere Bedeutung als CGI-Sprache, weil sie mächtige Befehle zur Verarbeitung von Texten besitzt, und diese im CGI-Bereich besonders hilfreich sind.
Daten an den Server sendenUm das Beispiel zu erweitern, soll die Webseite Daten an den Server senden. Daten gelangen normalerweise über Formulare an den Webserver, die der Anwender in seinem Browser ausfüllt. Ein Formular hat folgende äußere Struktur:
<FORM ACTION="/cgi-bin/tuwas" METHOD=GET> ... </FORM>
Der Inhalt dieses Formulars wird von dem Programm
Das folgende Formular wird nach Drücken auf den Button »Start« das Programm /cgi-bin/test02 durchstarten.
<HTML> <HEAD> <TITLE>Testseite</TITLE> </HEAD> <BODY>
<FORM ACTION="/cgi-bin/test02" METHOD="POST"> <INPUT TYPE="SUBMIT" VALUE="Start"> </FORM>
</BODY> </HTML> In der Formulardeklaration sehen Sie den Aufruf des CGI-Programmes hinter dem Schlüsselwort ACTION. Die Übermittlung der Daten aus der Formularmaske an das Skript erfolgt per Standardeingabe, wenn als Methode so wie oben POST verwendet wird. Als Beispiel für die Übermittlung von Daten aus einer Eingabemaske über CGI wird folgendes Formular verwendet:
<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 zu erweitern. Hier soll es aber nur um den Mechanismus gehen und da kann es gar nicht schlicht genug sein. Das Skript wird um das Lesen der Standardeingabe erweitert.
#!/bin/sh echo "Content-type: text/html" echo # Inititalisierung beendet: es folgt der gesendete Text read MASKE echo Der Inhalt des Formulars wird also in die Variable MASKE gelesen und anschließend wiedergegeben. Wir finden dann auf dem Browser die Zeile so wiedergegeben, wie das CGI-Programm sie empfängt.
Name=Willemer&Adresse=Ihre+Adresse%0D%0AOrt&Anrede=Frau Sie können anhand der Zeile leicht erkennen, wie der Aufbau der übermittelten Daten aussieht. Die Zuordnung der Elemente hat die Struktur
Feldname=Wert&Feldname=Wert&Feldname=Wert
Die Eingabeelemente werden durch & getrennt. Leerzeichen in Eingabefeldern werden durch ein + ersetzt. Bei den mehrzeiligen Texteingabefeldern (TEXTAREA) werden die Zeilen durch %0D%0A abgeschlossen. Ein kleines Perlskript, das die Auswertung dieser Zeile vornimmt, finden Sie auf S. cgiperl. Aus den Rohdaten der Formularmaske lassen sich die eingegebenen Werte isolieren. Damit können Sie beispielsweise eine Datenbankanfrage starten. Das Ergebnis können Sie mit HTML-Tags mischen und über die Standardausgabe an den Browser zurückgeben. Während bei CGI das Programm die Seite als Ausgabe komplett erzeugt, gibt es alternativ auch PHP, das in die Webseite eingebunden wird und nur die zusätzlichen Ausgaben erzeugt, wo der Code steht. Naheliegenderweise sind diese Programme etwas schlanker, da nicht auch alle statischen Seitenbestandteile einzeln programmiert werden müssen. PHP wird nicht als separates Programm gestartet, sondern als Modul. Bei einem intensiv besuchten Server wird dadurch die Belastung geringer. Näheres zu PHP finden Sie auf den folgenden Webseiten:
http://www.php.net
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|