...
Bild 1: Grundsätzlicher Aufbau des http-Servers mit CGI
Wird vom Client ein Dokument angefordert, trifft das CGI die Feststellung, ob der Dokumentpfad in das CGI-Programmverzeichnis oder in ein sonstiges Verzeichnis weist. Wird ein Programm im CGI-Programmverzeichnis angesprochen, wird dies vom CGI ausgeführt. Als Ergebnis liefert dieses Programm dann ein HTML-Dokument an das CGI. Dies geschieht über den Kanal ?Standardausgabe". Würde dieses Programm von der Shelloberfläche ?normal" ausgeführt erscheint dieses HTML-Dokument auf dem Bildschirm welcher üblicherweise das Standardausgabegerät darstellt.
Beispiel: *\#\ Wiki Markup
Code Block |
---|
#!/bin/sh |
...
|
...
# disable filename globbing |
...
|
...
set |
...
-f |
...
|
...
# Ich bin ein Dokument vom Typ text/html |
...
|
...
echo Content-type: text/html |
...
|
...
echo "" |
...
|
...
# Die HTML-Tags werden mit dem Befehl echo ausgegeben. |
...
|
...
echo '<HTML>' |
...
|
...
echo '<HEAD>' |
...
|
...
echo '<TITLE> Ein Counter </TITLE>' |
...
|
...
echo '</HEAD>' |
...
|
...
echo '<BODY BGCOLOR="BBDDFF" TOPMARGIN=5 LEFTMARGIN=5 LINK=YELLOW VLINK=WHITE><CENTER>' |
...
|
...
echo '<H5>' |
...
|
...
echo 'Besucher seit dem 01.06.1999:' |
...
|
...
echo '</H5>' |
...
|
...
echo '<TABLE BORDER=0 CELLSPACING="0" CELLPADDING="0"><TR><TD>' |
...
|
...
# Der Pfadname zur Counterdatei, die den letzten Wert enthält |
...
|
...
# Pfad vorhanden, Zugriffsrechte ?? |
...
|
...
COUNT_FILE=/www/htdocs/keipke/count/.count |
...
|
...
if |
...
[ |
...
! |
...
-f $COUNT_FILE |
...
] |
...
|
...
then |
...
|
...
# Wenn die Datei nicht existiert, dann mit dem Wert 0 anlegen. |
...
|
...
...
LAST_COUNT=0 |
...
|
...
...
echo $LAST_COUNT >$COUNT_FILE |
...
|
...
else |
...
|
...
# sonst Inhalt lesen und erhöhen, dann Speichern |
...
|
...
...
LAST_COUNT=`cat $COUNT_FILE` |
...
|
...
...
expr $LAST_COUNT + 1 >$COUNT_FILE |
...
|
...
fi |
...
|
...
# Es ist ein 5-stelliger Zähler |
...
|
...
# Der Wert wird jeweils durch die 5 Werte dividiert, das Ergebnis ergibt die |
...
|
...
# einzelne Ziffer für jede Stelle |
...
|
...
for i in 10000 1000 100 10 1 |
...
|
...
do |
...
|
...
...
FILENAME=`expr $LAST_COUNT / $i` |
...
|
...
...
while |
...
[ $FILENAME |
...
-gt 9 |
...
] |
...
|
...
...
do |
...
# solange der Wert größer 9 ist, weiter durch 10 teilen |
...
FILENAME=`expr $FILENAME % 10` |
...
|
...
...
done |
...
|
...
# Der Wert bildet die Grundlage für den Dateinamen der Grafik, welche |
...
|
...
# die einzelnen Ziffern enthält also 0.gif enthält die ?0" |
...
|
...
# der Tag für die Anzeige der Grafik |
...
|
...
...
echo '<img src=/graphics/'$FILENAME'.gif border="0">' |
...
|
...
done |
...
|
...
echo '</TD></TR></TABLE>' |
...
|
...
echo '</CENTER>' |
...
|
...
echo '</BODY></HTML>' |
...
|