Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

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