AllForm
Dieses Skript nimmt die Eingaben eines Formulars entgegen und verarbeitet sie bzw. sendet die Eingaben per EMail weiter und gibt danach eine Bestätigung aus.
Source Code
| Perl Sourcecode | |
| allform.pl | Das Skript allform.pl, Version 2.6 |
| web.pm | Das Modul web |
Wirkungsweise
Die Wirkungsweise wird anhand eines Beispiel-Formulars deutlich. Die Einstellung ist so, daß die Daten in einer Datei gespeichert werden und der Gast nach Eingabe der Daten sofort auf die Indexseite dieses Verzeichnisses weitergeleitet wird:
(Die eingegebenen Daten wurden hierin gespeichert: allform_umfrage.txt .)
Aufruf
Um das Skript zu nutzen, muss man in seinem Formular nur in einem
versteckten (hidden) Feld den Schluessel zu einem Dateinamen anzugeben, in dem die
Ergebnisse gespeichert werden sollen.
Alternativ kann auch eine EMail-Addresse angegeben werden.
Dateiname und/oder E-Mailadresse müssen natürliche eine gültige
Syntax haben und können aus Gründen des Systemschutzes
keine Sonderzeichen enthalten (diese wirden gelöscht!).
Im ACTION-Tag des Formulars, muss folgendes stehen:
<form action="http://www.../cgi-bin/allform.pl" method="post">
Danach sollte ein Input-Feld fuer den Dateinamen versteckt werden, der z.B. so aussieht:
<input type="hidden" name="filename"
value="1">
Falls man EMail und Filename gleichzeitig angibt, wird bei jedem neuen
Eintrag in die Datei ausserdem eine Bestätigung an die genannte EMail gesandt.
Die EMail wird ebenfalls versteckt mit:
<input type="hidden" name="mailto" value="unrzc9@rrze.uni-erlangen.de">
Falls nur eine EMail angegeben wurde, werden die Daten an die Addresse
gesandt.
Installation
Kopieren Sie die Datei allform.pl in Ihr CGI-BIN-Verzeichnis. Setzen Sie die Ausführungsrechte mittelsCHMOD.
Z.B.: chmod 755 allform.pl.Ändern Sie im Programm folgende Zeilen:
Zeile 1: #!/local/bin/perl5 |
geben Sie hier Ihren eigenen Pfad zu Perl ein, falls er von diesem abweicht. |
Zeile 26: use lib './'; |
Sollten Sie das Modul web.pm in Ihrem Perl Library Verzeichnis installiert haben, können Sie diese Zeile auskommentieren oder löschen. Ansonsten geben Sie hier den Pfad zu der Datei web.pm an. |
Zeile 29: $mailprog = '/usr/lib/sendmail'; |
Geben Sie hier Ihren persönlichen Pfad zum Programm sendmail an. |
Zeile 31: $webmastermail = "webmaster\@xwolf.com"; |
Diese Adresse wird nur dann angegeben, wenn daß Skript falsche Daten erhält. Dann verweist es auf diesen Fehler und empfielt, sich mit der Webmaster-Adresse in Verbindung zu setzen. |
Zeile 34: $webgruppe = "www"; |
Diese Angabe dient lediglich zur Information, falls ein Fehler aufgetreten ist. Sie beinhaltet die Angabe, zu welcher Benutzer-Gruppe der Webserver gehört. |
Zeile 38: $webadr = "webmaster\@xwolf.com"; |
Wenn das Skript E-Mails verschickt, taucht diese E-Mailadresse als Absender auf. |
Zeile 41: $userlog = "allform.log"; |
In dieser Datei wird ein Protokoll geführt, wer auf die Umfrage zugreift. Es wird so verhindert, daß jemand mehrmals ein Formular ausfüllt. |
Zeile 44: $homeserver = "cgi.xwolf.de"; |
Ist diese Variable angegeben, wird verhindert, daß das Formular auf einer anderen Domain als die angegebene ausgefüllt wird. |
Zeile 47: $LOGSIZE = 20; |
Hier wird festgelegt, wieviele Einträge die Datei $userlog haben darf. |
Zeile 50-51:
my %ALLOW_SUBMITFILES = ("1", "/tmp/submit1.tmp",
"2", "/tmp/submit2.tmp"); |
Hier wird festgeschrieben, welche Dateien zum Speichern der Ergebnisse
genutzt werden.
Als Schlüsselname im HTML-Formular darf nur eine der in der ersten Spalte angegebenen
Zeichen genutzt werden. Mit diesen ist dann der Dateiname
in der zweiten Zeile verknuepft. Bitte behalten Sie diese Syntax bei. |
Bemerkung
Falls der Dateiname vergessen wurde, oder die Rechte nicht stimmen etc,
dann meldet das Skript den Fehler.
Falls jemand mehrmals versucht das Formular abzusenden, wird dies abgefangen. (Es
müssen mindestens 5 Sekunden vergehen)
Zusaetzlich kann man entweder das Skript eine Bestätigung ausgeben
lassen, wobei die eingegebenen
Werte aufgeführt werden (außer den versteckten) oder aber es kann
auf eine andere Homepage weiterleiten.
In diesem Fall gibt man ebenfalls versteckt eine URL an:
<input type="hidden" name="url" value="http://cgi.xwolf.de/cgi/">


