SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuch.php?group=2
© 2001-2024 E-Mail SELFPHP Inh. Damir Enseleit, info@selfphp.de
© 2005-2024 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


CGI – Common Gateway Interface


Dynamisch erzeugte Websites mit Formularen oder Datenbanken erfordern in der Regel die serverseitige Ausführung von Programmen, die die Formularverarbeitung oder die Daten einer externen Datenbank in die Website integrieren.

Die für solche Zwecke geschaffene Schnittstelle zwischen dem Webserver und den dort abgespeicherten Programmen trägt den Namen Common Gateway Interface, kurz CGI.

Das Common Gateway Interface regelt den Aufruf und die Parameterversorgung von externen Programmen, den sogenannten CGI-Skripts. Die Parameterübergabe erfolgt hierbei in Abhängigkeit von der beim Aufruf des CGI-Programms gewählten HTTP-Methode. Der HTTP-Server und das aufgerufene CGI-Programm kommunizieren über eine Reihe von im CGI-Standard festgelegten Umgebungsvariablen. Diese enthalten Informationen über den HTTP-Server und die vom Client erzeugte Anfrage.

Der hinter der CGI-Schnittstelle stehende Mechanismus ist denkbar einfach:

Ein HTTP-Client fordert eine Seite an, deren URL auf ein vom Server auszuführendes Programm verweist. Dieses befindet sich in einem speziellen Verzeichnis, z. B. cgi-bin.

Der Server erkennt an der Dateiendung, dass es sich um ein Programm oder Skript handelt, und führt es auf. Das Skript erzeugt einen Antwort-Header gemäß HTTP-Protokoll, eine Leerzeile sowie den Inhalt der Antwort. Die Ausgabe des Programms erfolgt auf der Bildschirmausgabe, die vom Server auf den HTTP-Client umgeleitet wird.

Ein CGI-Skript kann entweder über die HTTP-Methode GET oder POST aufgerufen werden.


GET

Bei der GET-Methode werden die dem CGI-Skript zu übergebenden Parameter, durch ein Fragezeichen getrennt, an die URL der Client-Anfrage gehängt.

Beispiel

www.domain.de/cgi-bin/suche?wort=PHP

Hierdurch wird die Umgebungsvariable QUERY_STRING mit dem Wert der so übergebenen Parameter belegt.

Hinweis: Der Query-String ist der an den URL angehängte und von diesem durch ein Fragezeichen abgetrennte Teil, der die einem CGI-Programm zu übergebenden Parameter enthält. Diese werden in der Umgebungsvariablen QUERY_STRING abgelegt.


POST

Die zweite Möglichkeit, Daten an ein CGI-Skript zu übergeben, erfolgt über die POST-Methode. Hierbei werden dem Webserver die Daten im Entity-Body übergeben und an das CGI-Skript über die Standardeingabe weitergeleitet.

Die Sprache zur Programmierung des Skripts kann dabei beliebig gewählt werden. Es kann ein kompiliertes C-Programm sein, ein Skript für den als CGI-Programm konfigurierten PHP-Interpreter, ein Perl-Skript oder ein beliebiges ausführbares Programm.

Ein CGI-Skript kann Dokumente beliebigen Formats generieren, z. B. HTML-Dokumente. Damit der Client, dem das generierte Dokument gesendet wird, weiß, um welche Art von Dokument es sich handelt, erzeugt das CGI-Skript vor den eigentlichen Nutzdaten einen Header. Der Header besteht aus Textzeilen mit dem Format der bereits beschriebenen HTTP-Header und wird durch eine Leerzeile abgeschlossen.

Jeder Header besteht wie schon erwähnt aus mindestens zwei Zeilen, die für jedes Skript zwingend erforderlich sind. Die erste Zeile spezifiziert dabei den MIME-Typ des Dokuments.

Beispiel

Content-Type: text/html

Sofern das Skript einen Verweis auf ein anderes Dokument generiert, wird in der ersten Zeile die Location dieses Dokuments referenziert.

Beispiel

Location: www.domain.de/index.html

Die zweite Zeile ist eine Leerzeile, die den Header von den eigentlichen Nutzdaten trennt.