CGI Tutorial - Teil 2 / 10
Wolfgang Wiese (www.xwolf.de, xwolf@xwolf.de), Juli 1998, Letzte Änderung: Mai 2003[Das Common Gateway Interface]
[Übergabe von Benutzereingaben]
[Decodierung der übergebenen Daten]
[Schritt 1: Erstellung einer Eingabeform]
[Schritt 2: Die Programmierung]
[Schritt 3: Debugging eines CGI-Programmes]
[Standardfehler]
[Die Optimierung von CGI-Programmen durch Libraries und Module]
[Tipps, Tricks und Beachtenswertes]
[Links zu wichtigen FAQs und CGI-Seiten]
Übergabe von Benutzereingaben
Bei der Übermittlung der Daten vom Browser zum Web-Server und von diesem zum CGI-Programm werden die Daten in einer einzigen Zeichenkette gepackt:
- Sonderzeichen werden durch den hexadezimalen ASCII-Code ausgedrückt, wobei ein "%" als vorlaufende Kennzeichnung fungiert.
- Leerzeichen werden durch das Pluszeichen "+" ersetzt.
- Eventuell vorhandene Prozentzeichen werden erstetzt durch ein vorlaufendes Prozentzeichen und den ASCII-Code: "%25".
- Alle zu übergebenden Werte werden in der Form "
Name=Wert" eingebunden, wobei "Name" der im <INPUT>-Tag angegebene Name ist, und "Wert" der dazugehöhrige Eintrag.
Ein String, der dem CGI-Programm übergeben wird, kann also z.B. so aussehen:
Text=Hallo+dies+ist+ein+Test&Zeichen=%25
Die codierten Eingabedaten werden je nach Art der Methode dem Web-Server übergeben. Es gibt im wesentlichen zwei Methoden,
die verwendet werden: GET und POST.
Auf das CGI-Programm selbst macht es keinen großen Unterschied, welche Methode verwendet wird
(sieht man von einer zusätzlichen Zeile im Code ab).
Der Unterschied macht sich in der URL bemerkbar:
- Bei der
GET-Methode wird die in der <FORM ACTION="URL"> angegebene URL genommen und die codierten Eingabedaten angehängt, getrennt durch ein "?". Dies könnte zum Beispiel so aussehen:
http://.../cgi-bin/testcgi.pl?Text=Hallo+dies+ist+ein+Test&Zeichen=%25Diese URL wird beim Absenden der Anfrage auch durch den Browser angezeigt.
Die Nachteile derGET-Methode sind leicht ersichtlich:- Es eignet sich nur bei relativ geringen Datenmengen
- URLs werden unleserlich.
GETschneller alsPOST. - Bei der
POST-Methode bleibt die in <FORM ACTION="URL"> angegebene URL unverändert.
Die Daten werden für den Benutzer unsichtbar an den Server übertragen. Dies hat aber den Nachteil, daß man die URL nicht bookmarken kann: Während man z.B. bei einer Suchmaschine, welcher mitGETarbeitet ganz bestimmte Begriffe linken kann, und so immer einen aktuellen Link auf einen Suchbegriff haben kann, kann man dies nicht machen, wenn die MethodePOSTist.
Der folgende Link weist z.B. immer auf die Übersetzung des Wortes "Wahrscheinlichkeit" ins Englische:
http://www.leo.org/cgi-bin/dict-search?search=wahrscheinlichkeit
Die gleiche Funktionalität ist mitPOSTnicht möglich, weil die gesendeten Daten, nach einem Neustart des Browsers oder nachdem eine andere Form abgesendet wurde, nicht mehr zur Verfügung stehen.
Es ist somit nicht unwichtig sich darüber Gedanken zu machen, welche Methode man letztendlich benutzt.
Man sollte sich an die Regel halten, daß man generell große und/oder komplexe Eingabe mit POST übergibt, und alle andere
mit GET.
(Eine Alternative, beides abzudecken, wäre es, Informationen zusätzlich in der Pathinfo mitzugeben.
Die Informationen, die hier stehen, können sowohl bei POST, wie bei GET mitgeliefert werden. Die Informationen werden
allerdings dann in eine andere Environment-Variable übergeben.)
Info
$Id: cgitutor2.shtml,v 1.2 2003/05/20 13:25:54 xwolf Exp $
© 1996 - 2003 by xwolf -
xwolf ist eingetragene Marke beim Deutschen Patent- und Markenamt (Nr. 301 04 380)


