Liste I (CGI-Programmierung)
WS 00/01
Prof. Dr. K.O. Linn
1. Aufgabe:
-
Starten Sie den Browser und versuchen sich mit dem Web-Server auf pdv01.cs.fh-wiesbaden.de
oder doris.informatik.fh-wiesbaden.de zu verbinden.
Anm.:
Die Verbindung muß über das HTTP-Protokoll aufgebaut werden,
und nicht über das File-System.
Frage: Worin besteht der Unterschied?
-
Schreiben Sie ein CGI Programm (cgi_env.c), das alle Kommandozeilen Parameter
und das gesamte Evironment ausgibt.
Dazu muß man wissen, daß main(int argc, char *argv,
char* envp); mit envp einen
Pointer auf die/alle Environment Variablen zurückgibt. Sie erkennen
das Ende des Pointer Arrays
daran, daß Sie einen NULL-Pointer zurück bekommen.
-
Geben Sie den Output mit printf aus. Sie müssen beachten, daß
laut HTTP Protokoll
zuerst der Header und dann die Daten (der Body) ausgeben werden. Das
Ende des Headers markiert eine
Leerzeile. Der Header muß mindestens den Content-Type beinhalten.
z.B.: printf("Content-type: text/plain\r\n\r\n");
-
Starten Sie Ihr Programm zu allererst aus der Kommandozeile und testen
Sie es gut aus. Achten Sie darauf, dass der http-Header vorhanden und durch
eine Leerzeile vom Body getrennt ist. (Verwechseln Sie http-Header und
http-Body nicht den HTML Equivalenten, <HEAD<-... </HEAD> und
<BODY>....</BODY>!!!)
-
Kopieren Sie es dann in das (freigegebene) \www\cgi-bin Verzeichnis auf
PDV01
-
Rufen Sie Ihr Programm einmal
-
aus der Adress-Leiste des Browsers
-
und einmal aus diesem HTML-Dokument
heraus auf.
Dazu müssen Sie hier und hier und
hier
und hier die entsprechenden Links einbauen.
Rufen Sie das Programm
-
ohne Parameter
-
ohne Parameter aber mit angehängtem '?'
-
mit einem Parameter wobei Sie Programmnamen und Parameter durch ein '?'
trennen müssen.
-
mit mehreren Parametern die durch '+' getrennt sind
-
mit einem oder mehreren Key/Value-Paaren als Parameter. Syntax: key=value&key1=value1.....
-
Geben Sie noch eine zusätzliche PATH_INFO an, die Sie hinter dem Programmnamen
- durch '/' getrennt - anhängen.
-
Beachten Sie die Unterschiede in den verschiedenen Fällen und scheuen
Sie sich nicht auch ausgefallene Werte wie Umlaute oder '<' einzugeben.
-
Probieren Sie auch verschiedene Browser und schauen Sie das Ergebnis an:
-
im Browser
-
im Request String auf dem Web-Server
-
Achten Sie besonders auf die folgenden Umgebungsvariablen - sofern vorhanden:
-
REQUEST_METHOD
-
QUERY_STRING
-
CONTENT_LENGTH
-
PATH_INFO
-
PATH_TRANSLATED
-
REMOTE_ADDR
-
REMOTE_HOST
-
HTTP_REFERER
-
SCRIPT_NAME
-
SERVER_NAME
-
SERVER_PROTOCOL
-
SERVER_PORT
-
SERVER_SOFTWARE
-
HTTP_USER_AGENT
-
HTTP_ACCEPT
Anmerkung: Der HTTP_REFERER wird nur mitgeliefert, wenn der Proxy über den Sie evtuell gehen diese
Information auch durchlaesst. Der interne Proxy der FH filtert diese Information aus. D.h. wenn Sie
auf diese Seite übers Internet oder direkt zugreifen, dann sehen Sie diese Info. Gehen Sie über den
FH Proxy dann fehlt diese Zeile. Für korrektes Arbeiten muss im MS IE als locale Adresse - die nicht
über den Proxy erreicht werden soll "*.fh-wiesbaden.de" eingetragen sein. Bei Netscape muss "fh-wiesbaden.de"
eingetragen werden.