Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Virtuelles Hosting Jeder Rechner ein eigener Fremdgegangen - Andere Protokolle »

Unterabschnitte
  • Daten an den Server senden

CGI: der Server schlägt zurück

CGI (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 startmich ist zu Demonstrationszwecken als einfaches Shellskript realisiert. Der Skript ist leicht zu verstehen, wenn man weiß, dass der Befehl echo alle Parameter auf der Standardausgabe ausgibt.

#!/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 senden

Um 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 tuwas verarbeitet. Dieses muss sich auf dem Server in dem für CGIs definierten Verzeichnis befinden. Die Bedeutung der Attribute sind:

  • [ACTION=]
    Hier wird der Name des Programmes auf dem Server angegeben, das das Formularergebnis bearbeitet. Ausnahme ist die Anweisung mailto, die den Inhalt des Formulars an die angegebene Adresse versenden lässt. In diesem Fall sollte die Methode POST verwendet werden.
  • [METHOD=GET]
    Die Daten werden in der Environmentvariable QUERY_STRING abgelegt. Das CGI-Programm liest diese Variable aus.

  • [METHOD=POST]
    Die Daten werden per Standardeingabe an das CGI Programm geliefert. Die Environmentvariable CONTENT_LENGTH enthält die Länge der Eingabe.

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
http://www.selfphp.info



« Virtuelles Hosting | Jeder Rechner ein eigener | Fremdgegangen - Andere Protokolle »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de