...
Dateiname | Verwendung |
/gaestebuch/gb-neu.htm | Maske zur Erfassung eines neuen Gästbucheintrags |
/cgi-bin/gb-neu.sh | Ausführungsscript für einen neuen Gästebucheintrag |
/cgi-bin/gb-query.sh | Anzeige der Einträge des Gästebuchs |
Code Block |
---|
Wiki Markup |
{CODE} <HTML><TITLE>Eintrag in das Gästebuch </TITLE> <BODY BGCOLOR="#BBDDFF"> Wenn Sie einen neuen Eintrag vornehmen möchten,<BR> geben Sie bitte Ihre persönlichen Daten<BR> und einen Kommentar an:<BR> <FORM ACTION="/cgi-keipke/gb-neu.sh" METHOD="GET"> <TABLE BORDER="1"><TR><TD> Name: </TD><TD> <INPUT TYPE="text" SIZE="20" MAXLENGTH="20" NAME="BESUCHER"> </TD></TR><TR><TD> Vorname: </TD><TD> <INPUT TYPE="text" SIZE="20" MAXLENGTH="20" NAME="VORNAME"> </TD></TR><TR><TD> EMail: </TD><TD> <INPUT TYPE="text" SIZE="60" MAXLENGTH="60" NAME="EMAIL"> </TD></TR><TR><TD> Kommentar: </TD><TD> <INPUT TYPE="text" SIZE="60" MAXLENGTH="60" NAME="KOMMENTAR"> </TD></TR> </TABLE> <INPUT TYPE="submit" VALUE="Eingabe OK"> <INPUT TYPE="reset" VALUE="Eingabe löschen"> </FORM> </BODY> </HTML> {CODE} |
Bild 9: Die Datei /gaestebuch/gb-neu.htm
Code Block |
---|
Wiki Markup |
{CODE} #!/bin/sh # disable filename globbing set -f echo Content-type: text/html echo "" echo '<HTML><HEAD>' echo '<BODY BGCOLOR="#BBDDFF">' # Der Pfad für die Datei, welche die Gästebuchdaten enthält GB_DIR=/www/htdocs/keipke/gaestebuch.data # Der Dateiname GB_FILE=$GB_DIR/gaestebuch.data # Herausfiltern der eingegebenen Daten aus dem String ?$QUERY_STRING" NAME=`echo $QUERY_STRING|cut -d'&' -f1|cut -c 10-` VORNAME=`echo $QUERY_STRING|cut -d'&' -f2|cut -c 9-` EMAIL=`echo $QUERY_STRING|cut -d'&' -f3|cut -c 7-` KOMMENTAR=`echo $QUERY_STRING|cut -d'&' -f4|cut -c 11-` DATE_TIME=`date +'%d.%m.%y %T'` NAME=`/www/htdocs/keipke/cgi-bin/charchg.sh $NAME` VORNAME=`/www/htdocs/keipke/cgi-bin/charchg.sh $VORNAME` EMAIL=`/www/htdocs/keipke/cgi-bin/charchg.sh $EMAIL` KOMMENTAR=`/www/htdocs/keipke/cgi-bin/charchg.sh $KOMMENTAR` # Ausgabe der Daten zur Bestätigung oder Fehler echo 'Ihre Eingabe:<BR><BR>' echo '<TABLE BORDER="1"><TR>' echo '<TD>' echo Zeit echo '</TD>' echo '<TD>' echo $DATE_TIME echo '</TD></TR><TR>' echo '<TD>' echo Name echo '</TD>' echo '<TD>' echo $NAME echo '<TD></TR><TR>' echo '</TD>' echo '<TD>' echo Vorname echo '</TD>' echo '<TD>' echo $VORNAME echo '</TD></TR><TR>' echo '<TD>' echo EMail echo '</TD>' echo '<TD>' echo $EMAIL echo '</TD></TR><TR>' echo '<TD>' echo Kommentar echo '</TD>' echo '<TD>' echo $KOMMENTAR echo '</TD>' echo '</TR></TABLE><BR>' if [ -z $NAME ] || [ -z $EMAIL ] || [ -z $KOMMENTAR ] then echo 'konnte nicht gespeichert werden, weil<BR>' echo 'die Felder Name, EMail oder Kommentar<BR>' echo 'nicht ausgefüllt wurden.<BR>' echo 'Gehen Sie über Ihren Browser mit dem<BR>' echo 'Schalter "Back" oder "Zurück" zur vorherigen<BR>' echo 'Eingabemaske zurück<BR>' else if [ -d $GB_DIR ] then # Wenn das Verzeichnis existiert if [ -w $GB_DIR ] then # Wenn das Verzeichnis beschreibbar ist if [ ! -f $GB_FILE ] then # Wenn die Datei noch nicht existiert, dann anlegen touch $GB_FILE else if [ -w $GB_FILE ] then # Wenn die Datei beschreibbar ist echo $DATE_TIME'|'$NAME'|'$VORNAME'|'$EMAIL'|'$KOMMENTAR >>$GB_FILE echo 'wurde erfolgreich in das Gästebuch eingetragen' echo 'Vielen Dank für Ihren Besuch<BR><BR>' echo '<a href="../main.htm" >Zurück zur Leitseite</a>' else echo 'konnte nicht gespeichert werden.<BR>' echo 'Die Datendatei ist nicht beschreibbar.' fi fi else echo 'konnte nicht gespeichert werden.<BR>' echo 'Das Verzeichnis ist nicht beschreibbar.' fi else echo 'konnte nicht gespeichert werden.<BR>' echo 'Das Verzeichnis existiert nicht.' fi fi echo '</BODY></HTML>' {CODE} |
Bild 10: Die Datei /cgi-bin/gb-neu.sh
Code Block |
---|
Wiki Markup |
{CODE} #!/bin/sh # aus dem als Parameter übergebenen Wert werden bestimmte Sonderzeichen ausgetauscht. Weil z.B. vom Brwoser %40 für einen @ geliefert wird. if [ $# -eq 0 ] then exit fi for i in $* do echo $i|sed -e 's/%40/@/g' -e 's/%E4/ä/g' -e 's/%F6/ö/g' -e 's/%FC/ü/g' -e 's/%C4/Ä/g' -e 's/%D6/Ö/g' -e 's/%DC/Ü/g' -e 's/%DF/ß/g' -e 's/%2C/,/g' -e 's/+/ /g' -e 's/%28/8/g' -e 's/%29/)/g' -e 's/%3C/</g' -e 's/%3D/>/g' -e 's/%22/\"/g' -e 's/%21/\!/g' done {CODE} |
Bild 11: Die Datei /cgi-bin/charchg.sh
Code Block |
---|
Wiki Markup |
{CODE} #!/bin/sh # disable filename globbing set -f echo Content-type: text/html echo "" echo '<HTML><BODY BGCOLOR="#BBDDFF">' GB_DIR=/www/htdocs/keipke/gaestebuch.data GB_FILE=$GB_DIR/gaestebuch.data if [ -s $GB_FILE ] then # Wenn die datei existiert und nicht leer ist echo '<H1>Gästebuch von www.keipke.de</H1><BR>' echo 'Es werden die (max.) letzten 20 Einträge aus<BR>' echo 'dem Gästebuch angezeigt.<BR>' echo 'Insgesamt sind zur Zeit' # Ermittlung Anzahl Zeilen cat $GB_FILE|wc -l echo 'Einträge vorhanden<BR><BR>' echo '<TABLE BORDER="1">' # Die letzten 20 Zeilen oder weniger holen. Die Formatierung als Tabelle # übernimmt der awk. Hierbei werden die pipezeichen durch TR/TD-tags ersetzt. tail -20 $GB_FILE|awk -F'|' ' $1 != "" { print ""$1""$2""$3""$4""$5"" }' echo '</TABLE>' else echo 'Das Gästebuch enthält zur Zeit' echo 'noch keine Einträge. Versuchen Sie' echo 'es zu einem späteren Zeitpunkt noch einmal.' fi echo '</BODY></HTML>' {CODE} |
Bild 12: Die Datei gb-query.sh