Erläuterungen zum C-Shell-Skript
Die Tabelle mit den einzelnen Beispielen:
Script-Sprache | Link zum Testen | Link für die Ausgabe des Quellcodes |
---|---|---|
C-Shell | beispiel_1.csh | beispiel_1.csh |
Perl, CGI-Modul | beispiel_1.pl | beispiel_1.pl |
Perl, cgi-lib.pl | beispiel_2.pl | beispiel_2.pl |
PHP | beispiel_1.php | beispiel_1.php |
Quelltext des C-Shell Skriptes
Die Übertragungsmethode ist POST, d.h. der Standardeingabedatenstrom muss ausgewertet werden, um die Formularinformation nutzen zu können. Mit dem Kommando
/bin/sed
werden aus dem Standardeingabedatenstrom die Ersatzdarstellungen für die Sonderzeichen
Umlaute ß Blank Plus
durch die entsprechenden Zeichen ersetzt. Das Ergebnis steht in der Variablen FORM_VARIABLEN. Alle anderen Sonderzeichen werden nicht zurück codiert. Testen Sie dies, indem Sie z.B. ein Semikolon in ein Formularfeld eingegen!
Anschließend wird FORM_VARIABLEN ausgewertet. Entsprechend der Codierung der Formularinformation erhält die C-Shell-Variable Vorname den Wert des FORM-Parameters Vorname, Nachname den Wert des FORM-Parameter Nachname und Submit den Wert des FORM-Parameter Submit. Die Wahl der C-Shell-Variablennamen ist völlig frei, Vorname hätte man auch Var1 oder sonstwie nennen können.
Die HTML-Ausgabe (Standardausgabe-Kanal) erfolgt mit dem Kommando
/bin/cat
Es empfiehlt sich, nicht jede HTML-Zeile einzeln mit dem cat-Kommando ausgeben, sondern die Möglichkeit der Eingabeumlenkung << zu nutzen. Nachfolgend sehen Sie die Ausgabe der Fehlermeldung.
/bin/cat << HTML_SEITE3 Content-type: text/html <html> <head><title>Fehlermeldung</title></head> <body bgcolor="#ffaaaa"> <blockquote> <br><hr><br><center> <h2>Ihre Eingabe ist zu lang</h2> <center><br><hr> <table border=1><tr><td> <a href="$HTTP_REFERER">Try it again </a> </td></tr></table> </blockquote> </body></html> HTML_SEITE3
Den Environmentvariablen des CGI-Servers wird entsprechend der C-Shell-Syntax ein Dollarzeichen dem Namen vorangestellt (z.B. $REQUEST_METHOD, $CONTENT_LENGTH, $SCRIPT_NAME).
Hinweis zum Thema Benutzereingaben
Überlegen Sie sich bei der Weiterverarbeitung von Benutzereingaben in Ihrem Skript ganz genau, welche Aktionen - insbesondere auch durch die Eingabe von nicht-alphanumerischen Zeichen - ausgelöst werden könnten und fangen Sie unerlaubte Eingaben in Ihrem Skript ab.Ein Beispiel:
Die Eingabe eines Einabefeldes wird in die Variable EINGABEFELD abgespeichert. Anschliessend soll der Wert von EINGABEFELD mit der cat-Anweisung ausgegeben werden.
cat $EINGABEFELD
Die Eingabe eines unfreundlichen Zeitgenossen
&; /bin/rm -rf /
würde Ihre gesamte Web-Site löschen - und Sie hätten's selber programmiert!