Dokumentation: Common Gateway Interface © by Michael Rentzsch, 2001
Inhalt | << Vorherige | Nächste >> |
CGIs können auf verschiedene Art und Weise aufgerufen werden:
oben
CGI-Programm lesen die Daten mit denen sie arbeiten aus der Standardeingabe und bzw. oder aus Umgebungsvariablen, die ihnen zur Laufzeit vom Serverprozess zur Verfügung gestellt werden. Im folgenden eine Liste aller dieser Variablen mit ihrer jeweiligen Bedeutung:
Variablenname | Beschreibung |
---|---|
CONTENT_LENGTH | Enthält die Anzahl der Zeichen, die beim Aufruf des CGI-Scripts über die POST-Methode übergeben wurden. Wenn das CGI-Script beispielsweise beim Absenden eines HTML-Formulars aufgerufen wurde und dort als Übertragungsmethode POST angegeben ist, steht in dieser Umgebungsvariablen, wie viele Zeichen das Script von der Standardeingabe lesen muß, um die übermittelten Formulardaten vollständig einzulesen. |
CONTENT_TYPE | Enthält beim Aufruf über die POST-Methode den Mime-Type der übergebenen Daten. Wenn das CGI-Script beispielsweise beim Absenden eines HTML-Formulars aufgerufen wurde und dort als Übertragungsmethode POST angegeben ist, steht in dieser Umgebungsvariablen der für HTML-Formulare typische Mime-Type application/x-www-form-urlencoded. |
GATEWAY_INTERFACE | Enthält die Version der CGI-Schnittstelle, die von dem installierten Server unterstützt wird, z.B. CGI/1.1, wenn die gegenwärtig übliche Version 1.1 der Schnittstellendefinition unterstützt wird. |
HTTP_ACCEPT | Enthält die Liste der Mime-Types, die der aufrufende WWW-Browser akzeptiert. Die Angabe */* bedeutet: der WWW-Browser akzeptiert alles. |
HTTP_REFERER | Enthält die URL-Adresse der WWW-Seite, von der aus das CGI-Script aufgerufen wurde. Der Wert wird jedoch nicht von allen WWW-Browsern übermittelt, ist also nicht in jedem Fall verfügbar. |
HTTP_USER_AGENT | Enthält Produkt- und Versionsinformationen zum aufrufenden WWW-Browser. Ein CGI-Script kann auf diese Weise ermitteln, welchen Browser ein Anwender verwendet. |
PATH_INFO | Enthält spezielle Pfadinformationen, wenn das Script über die GET-Methode aufgerufen wurde, und zwar relativ zu den im WWW-Server eingestellten Root-Verzeichnissen. |
PATH_TRANSLATED | Enthält spezielle Pfadinformationen, wenn das Script über die GET-Methode aufgerufen wurde - im Unterschied zu PATH_INFO jedoch Pfadangaben entsprechend der Verzeichnisstruktur des Server-Rechners. |
QUERY_STRING | Enthält beim Aufruf über die GET-Methode eine Zeichenkette mit Daten, die dem Script übergeben wurden. Wenn ein Anwender ein HTML-Formular ausgefüllt hat, bei dessen Absenden das CGI-Script aufgerufen wurde, stehen in dieser Umgebungsvariablen die ausgefüllten Formulardaten. Die Daten sind nach den Regeln des Mime-Types application/x-www-form-urlencoded kodiert. |
REMOTE_ADDR | Enthält die IP-Adresse des Server-Rechners, über den das CGI-Script aufgerufen wurde, wenn es ein anderer Server ist als der, auf dem das CGI-Script liegt. Dieser Wert wird jedoch nicht in allen Fällen gesetzt. |
REMOTE_HOST | Enthält die Domain-Adresse des Server-Rechners, über den das CGI-Script aufgerufen wurde, wenn es ein anderer Server ist als der, auf dem das CGI-Script liegt. Dieser Wert wird jedoch nicht in allen Fällen gesetzt. |
REMOTE_IDENT | Enthält Protokollinformation, wenn auf dem Server das Protokoll ident für geschützte Zugriffe läuft. |
REMOTE_USER | Enthält den Benutzernamen, der das CGI-Script aufgerufen hat. Dieser Wert wird nur gesetzt, wenn die Server-Authentifizierung eingeschaltet ist. |
REQUEST_METHOD | Enthält den HTTP-Befehl, mit dem das CGI-Programm aufgerufen wurde. Entweder GET oder POST. Ein CGI-Script kann beispielsweise diese Variable auslesen und danach entscheiden, wie es Formulardaten einlesen kann: entweder von der Standardeingabe (bei Methode POST) oder aus der Umgebungsvariablen QUERY_STRING (bei Methode GET). |
SCRIPT_NAME | Enthält die URL-Adresse des aufgerufenen CGI-Scripts realtiv zur Domain-Adresse, also z.B. /cgi-bin/search.pl. |
SERVER_NAME | Enthält den Namen des Servers (z.B. www.xy.com) oder die IP-Adresse (z.B. 127.0.0.1). |
SERVER_PORT | Enthält die Portnummer, die für den WWW-Server eingerichtet wurde. Normalerweise ist dies für WWW-Server die Nummer 80. |
SERVER_PROTOCOL | Enthält die Version des HTTP-Protokolls, das der installierte WWW-Server unterstützt, z.B. HTTP/1.0, wenn die gegenwärtig übliche Version 1.0 des HTTP-Protokolls unterstützt wird. |
SERVER_SOFTWARE | Enthält die Produktbezeichnung der installierten Server-Software, z.B. OmniHTTPd/2.0a1 (Win32; i386) |
Quelle: selfhtml
Am häufigsten werden CGI-Programme zur Auswertung von Formulardaten verwendet.
Dabei existieren zwei Möglichkeiten, wie die eingegebenen Daten an das
Programm übergeben werden: Get und Post. Die verwendete Methode
wird im "Kopf" des Formulares festgelegt:
<form method="Get">
oder <form <method="Post">
Bei dieser Methode werden die Formulardaten (in einem entsprechend "codierten" String) vom CGI aus der Standardeingabe (stdin) gelesen. Dabei ist zu beachten, dass die Anzahl der dazu gehörenden Zeichen in der Umgebungsvariable CONTENT_LENGTH stehen, es erfolgt kein Dateiendezeichen!
GET
Hier werden die Formulardaten in der Umgebungsvariable QUERY_STRING übergeben. Bei der Methode GET ist zu beachten, dass die Daten danach in der URL-Zeile des Browsers erscheinen (nicht geeignet für Passwörter).
Formatierung
Zu den übertragenen Daten gehören die Feldnamen und -werte des Formulars,
die wie folgt dem CGI übergeben werden:
Name1=Wert1&Name2=Wert2&Name3=Wert3
CGI-Programme geben ihre Informationen über die Standardausgabe aus. Dabei kann dies:
sein. Natürlich muss es dem Browser mitteilen, wie er die Daten interpretieren soll, dies geschieht in der ersten Zeile:
echo Content-type: text/html
oder
echo Content-type: text/plain
Es muss danach eine Leerzeile folgen (Zeilenwechsel).
Einer der Vorteile von CGI ist, dass man die Programme in seiner "Lieblingsprogrammiersprache" schreiben kann, sofern diese folgendes unterstützt:
Die für CGI-Programme sicherlich am meisten verwendete Sprache ist dabei Perl. Dies hat verschiedene Ursachen: