Vielleicht haben die Leser das Gefühl, dass CGI-Programme etwas Geheimnisvolles haben. In diesem Abschnitt werden wir einige grundlegende Programmierprozesse von CGI-Programmen beschreiben. Nachdem Sie es gelesen haben, wird es kein Geheimnis mehr geben.
3. Andere Probleme mit CGI-Spezifikationen:
Vielleicht haben die Leser das Gefühl, dass CGI-Programme etwas Geheimnisvolles haben. In diesem Abschnitt werden wir einige grundlegende Programmierprozesse von CGI-Programmen beschreiben. Nachdem Sie es gelesen haben, wird es kein Geheimnis mehr geben.
Teilen Sie bei Programmierarbeiten zunächst eine große Aufgabe in viele kleine Aufgaben auf, und jede kleine Aufgabe führt eine relativ unabhängige Funktion aus. Viele Menschen zögern, selbst CGI-Programme zu schreiben, weil sie die CGI-Programmierung als schwierig empfinden. Wenn Sie ein typisches CGI-Programm in die folgenden Teile unterteilen und diese einzeln lösen, werden Sie mit dem CGI-Programm tatsächlich keine Schwierigkeiten haben:
Im Allgemeinen muss der Server beim Aufrufen eines CGI-Programms im Browser zuerst das CGI-Programm finden. Im Allgemeinen wird das CGI-Programm in dem vom Server angegebenen Verzeichnis in unserem OmniHTTPD abgelegt Die tatsächlichen Verzeichnisse, die durch das Verzeichnis angegeben werden, sind die Verzeichnisse c:httpdcgi-bin und c:httpdcgi-win. Sie können das tatsächliche Verzeichnis in OmniHTTPD ändern oder ein virtuelles Verzeichnis hinzufügen, z. B.: Geben Sie das virtuelle Verzeichnis cgi-test als c:my-cgi an, wenn Sie ein CGI mit dem Namen test1.cgi im Verzeichnisprogramm c:my-cgi haben , können Sie es in Ihrem Browser unter der Adresse http://localhost/cgi-test/test1.cgi aufrufen.
Unter normalen Umständen findet der Server das vom Browser angeforderte CGI-Programm und generiert einen Prozess dieses CGI-Programms. Auf diese Weise haben Browser und Server eine Verbindung hergestellt. Sobald die Ausführung des CGI-Programms abgeschlossen ist, verschwindet der Prozess und die Verbindung geht verloren. Alle Vorgänge in der obigen Abbildung werden innerhalb der Zeit abgeschlossen, in der die Verbindung hergestellt wird. Daher sollten die von jedem CGI-Programm ausgeführten Aufgaben so gering wie möglich sein. Andernfalls wird der Server viel Zeit und Ressourcen in Anspruch nehmen Die Laufzeit des Client-Browsers wird ebenfalls sehr lang sein.
Wie Sie in der Abbildung oben sehen können, sind CGI-Programme im Allgemeinen in drei Teile unterteilt: Dateneingabe, Datenverarbeitung und Datenausgabe. Manchmal ist es erforderlich, im Datenverarbeitungsteil mit der Datenbank zu interagieren (dies ist auch die Spezialität von CGI). Programme). Unter diesen drei Teilen unterliegen Dateneingabe und Datenausgabe strengen Spezifikationen, und bei der Datenverarbeitung können Sie Ihrer Fantasie freien Lauf lassen. Als nächstes werde ich mich auf die Spezifikationen und Vorsichtsmaßnahmen für die Dateneingabe und Datenausgabe konzentrieren:
Zuvor haben wir fast alle von CGI-Programmen verwendeten Umgebungsvariablen aufgelistet. Ein erheblicher Teil davon hängt eng mit der Eingabe und Ausgabe von Daten zusammen. Nachfolgend listen wir die am häufigsten verwendeten Umgebungsvariablen nach Kategorie auf:
Serverbezogene Umgebungsvariablen:
GATEWAY_INTERFACE
SERVER_NAME
SERVER_PORT
SERVER_PROTOCOL
SERVER_SOFTWARE
Clientbezogene Umgebungsvariablen:
HTTP_ACCEPT
HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE
HTTP_AUTHORIZATION
HTTP_CHARGE_TO
HTTP_FROM
HTTP_IF_MODIFIED_SINCE
HTTP_PRAGMA
HTTP_REFERER
HTTP_USER_AGENT
Umgebungsvariablen im Zusammenhang mit der Anfrage:
AUTH_TYPE
CONTENT_FILE
CONTENT_LENGTH
CONTENT_TYPE
OUTPUT_FILE
PATH_INFO
PATH_TRANSLATED
QUERY_STRING
REMOTE_ADDR
REMOTE_USER
REQUEST_LINE
REQUEST_METHOD
SCRipT_NAME
Erwähnenswert sind hier CONTENT_FILE und OUTPUT_FILE. Unter Windows 3.1 und DOS können nicht viele Sprachen über die Standardeingabe und -ausgabe (STDIN und STDOUT) lesen und schreiben, daher werden stattdessen diese beiden Variablen verwendet. Weitere Umgebungsvariablen finden Sie in der vorherigen detaillierten Liste.
Wie bereits erwähnt, leitet die GET-Methode Daten über die URL weiter; die POST-Methode übergibt Daten über STDIN. Unabhängig von der verwendeten Methode werden die Daten bei der Datenübertragung verschlüsselt. Wir müssen uns jedoch nicht um die Kodierung und Dekodierung kümmern, da die Entwicklungssprache, die wir verwenden werden, diese Aufgabe automatisch erledigen kann: cgi-lib.pl in Perl, TWebModule in Delphi usw.
Header-Informationen sind auch bei der CGI-Programmierung sehr wichtig. Die Header-Informationen sind ein Signal vom CGI-Programm, bevor Informationen an den Client gesendet werden. Es gibt drei Haupttypen von Header-Informationen:
Inhaltstyp //HTML an den Browser übertragen
Standort //Übergeben Sie die neue URL an den Browser
Status //Wird normalerweise zur Fehlerprüfung verwendet, wenn ein CGI-Programmfehler auftritt
Der Inhaltstyp ist die Art der vom Browser verarbeiteten Informationen, hauptsächlich der MIME-Typ. Methoden werden als Kombinationen von Typen und Untertypen definiert. Häufig verwendete MIME-Typen sind: Text, Multipart, Message, Anwendung, Bild, Audio und Video.
Bevor beispielsweise ein CGI-Programm ein HTML-Dokument an den Browser sendet, sollte es zunächst text/html senden. In Perl wie folgt geschrieben:
print „Content-type:text/html“
print „< h1> Hallo zusammen! < /h1> „
Der Standort führt dazu, dass der Browser zur neuen URL umleitet. Zum Beispiel:
Drucken Sie „Standort:http://www.chinabyte.com“
Dieses Perl-Programm leitet den Browser auf die Homepage von ChinaByte um.
Der Status gibt den Status des CGI-Programms an und wird normalerweise zur Fehlerprüfung verwendet, wenn das CGI-Programm fehlschlägt. In der folgenden Tabelle sind häufig verwendete Statuscodes und ihre Bedeutung aufgeführt:
Beschreibung des Codeergebnisses
200 OK-Anfrage wird normal erfüllt
202 Akzeptieren Die Anfrage wurde angenommen und wird verarbeitet.
301 Verschoben Das Dokument wurde an einen neuen Speicherort verschoben
302 Gefunden Das Dokument befindet sich nicht in der Beschreibung, sondern an einer anderen Stelle auf dem Server.
400 Bad Request Die Syntax der HTTP-Anfrage ist falsch.
401 Nicht autorisiertes Dokument erfordert Zugriffsrechte
403 Forbindden Der Server verweigert den Zugriff auf das Dokument
404 No Found Der Server kann das Dokument nicht finden.
500 Serverfehler Im Server ist ein schwerwiegender Fehler aufgetreten
502 Dienst überlastet Der Server ist ausgelastet und kann die Anfrage nicht verarbeiten.
Das endet hier. Nachdem Sie über diese grundlegenden CGI-Kenntnisse verfügen, können Sie Schritt für Schritt mit der Entwicklung von CGI-Programmen in einer beliebigen Sprache beginnen. Ich sage es Ihnen noch einmal: CGI-Programme sind nicht mysteriös, es handelt sich lediglich um einen Dialog zum Erstellen eines Servers und eine Art Aufgabe.