Formularauswertung mit PERL: Dokumentation

Zusätzlich zur Möglichkeit einfach ein E-Mail-Fenster zur Verfügung zu stellen (ACTION="mailto:..."), gibt es am ZID-Server die Möglichkeit, beliebige Formulare zu verarbeiten.
Dazu muß im Formular das Programm alles.pl aufgerufen werden, an das man z.B.
  • eine E-Mail-Adresse der TU Graz (unter dem Namen mail),
  • ein E-Mail-Subject (mailsubject),
und beliebig viele andere Felder übergeben kann.

Das Programm schickt dann eine Nachricht unter dem Subject mailsubject an die Adressen im Feld mail (durch „,“ getrennte Liste), in der immer <feldname>: <feldinhalt> steht, der Body der E-Mail wird dabei UTF-8 kodiert, Sie sollten also das Character-Set der aufrufenden HTML-Seite ebenfalls auf UTF-8 stellen:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
im Header der HTML-Seite und accept-charset="utf-8" im FORM-Tag.
Achtung:

  • als Feldname dürfen TAN, must, mail, mailsubject, bgcolor, background, stylesheet, default, noemptyfields, output, separator und feedbackurl sowie feedbackok nofeedback (genau so geschrieben) nicht (nochmals) verwendet werden, da diese Felder eine Sonderbedeutung haben!
    aufruf darf gar nicht verwendet werden, wenn feedbackok verwendet wird.
    Das Feld Name wird - falls vorhanden - als Realname des Absenders verwendet, im Feld realname können Sie, wenn Sie wollen, z.B. Ihren eigenen Namen mit übergeben (für die Bestätigungsmail)
  • Feldnamen dürfen (außer beim Typ radio) nicht doppelt verwendet werden.
  • Der Wert in bgcolor bzw. background wird als Hintergrund des Antwortfensters verwendet, falls kein Feld feedbackurl angegeben ist.
  • Der Wert im Feld stylesheet wird als URL für ein StyleSheet (CSS) verwendet, das in die Antwortseite eingebaut wird.
  • Der Wert in feedbackurl wird als URL für die Seite verwendet, auf die nach Abschicken des Formulars verzweigt wird.
    Wenn es kein Feld feedbackurl gibt, wird ein Standardtext mit Angabe der Eingabedaten dargestellt, im Normalfall in englischer Sprache, wenn der Browser aber de als seine bevorzugte Sprache eingestellt hat, dann in deutscher Sprache.
  • Durch Angabe von feedbackok mit Wert „ok“ kann man erzwingen, daß nachgefragt wird, ob die Daten, die übertragen werden sollen, auch stimmen.
  • Falls nofeedback den Wert „yes“ bekommt, werden in der Bestätigungs-E-Mail (siehe Feld Mail) nicht die eingegebenen Daten, sondern nur ein kurzer Bestätigungstext versandt.
  • Durch Angabe von noemptyfields mit Wert „yes“ kann man erreichen, daß nur jene Felder übermittelt werden, für die auch Werte gesetzt wurden
  • Im (hidden) Feld must kann man die Feldnamen als Liste (mit Komma ohne Leerzeichen trennen, case sensitive) übergeben, bei denen ueberprüft werden soll, ob sie ausgefüllt wurden oder nicht („Muß-Felder“), im Feld errorurl kann man dabei angeben, welche Seite statt der Defaultseite angezeigt werden soll, wenn nicht alle Felder ausgefüllt sind.
  • Bei Verwendung von Mail (Adresse des Absenders, an den auch ein „Kontroll-E-Mail” gesandt wird) ist unbedingt auch ein Feld TAN vorzusehen, in das eine zuvor angeforderte TAN einzugeben ist, damit das nicht zum Versenden von Spam mißbraucht werden kann - Ausnahme:
    • entweder ist die Adresse eine interne Adresse der TU Graz
    • oder nofeedback hat den Wert „yes

Da die eingegebenen Werte in Variablen gespeichert werden, die den Feldnamen tragen, ist es beim Typ checkbox wichtig, daß jede Checkbox einen eigenen Namen bekommt und als Wert z.B. nur „ja“ eingetragen wird - also nicht


    <INPUT TYPE=checkbox NAME=Merkmale VALUE="Merkmal 1">
    <INPUT TYPE=checkbox NAME=Merkmale VALUE="Merkmal 2">
    <INPUT TYPE=checkbox NAME=Merkmale VALUE="Merkmal 3">
   
sondern z.B.

    <INPUT TYPE=checkbox NAME="Merkmal 1" VALUE=ja>
    <INPUT TYPE=checkbox NAME="Merkmal 2" VALUE=ja>
    <INPUT TYPE=checkbox NAME="Merkmal 3" VALUE=ja>
   

Falls Sie die Daten danach z.B. in Excel weiterverarbeiten wollen, dann ist es nützlich die Daten in einem csv-Format zu bekommen, dies können Sie erreichen, indem Sie im Feld output den Wert csv übergeben, dann werden allerdings nur die Feldwerte, nicht die Feldnamen übermittelt. Der Default-Separator ist „;“, aber auch den können Sie im Feld separator selbst setzen.
Falls Sie einen Defaultwerte für nicht ausgefüllte Felder verwenden wollen, dann können Sie diesen im Feld default setzen.

Es ist weiters möglich eine Benachrichtigung an eine 2. Person zu übermitteln (z.B. als Anmeldebestätigung): richten Sie dazu ein Feld mit Namen Mail ein (das dann natürlich auch nicht nochmals verwendet werden darf)!
Falls Sie also nach der E-Mail-Adresse einer Person fragen und dieses Feld Mail nennen, dann wird an diese E-Mail-Adresse eine Bestätigung der Eintragung geschickt, in diesem Fall ist es unbedingt notwendig auch eine TAN (s.o.) zu verwenden!

In einem Feld vom Typ file (und dem Namen file) ist es möglich eine Datei mit der Mail mitzuschicken (erlaubte Zeichen: a-z, A-Z, 0-9, ., - und _), dann sollten Sie das PERL-Script aber unbedingt mit ENCTYPE="multipart/form-data" aufrufen.

Hinweis:
Falls Sie vor haben Felder zwingend vorzuschreiben, dann sollten Sie diese so markieren, daß sie auch bei Verwendung eines Text-Browsers als markiert erscheinen, eine Möglichkeit dafür sehen Sie im folgenden Beispiel.

Achtung: Falls Sie eine Tagungsanmeldung etc. mit vertraulichen Angaben (zB Kreditkartennummer) über dieses Formular verwirklichen wollen, so sollten Sie den Webmaster kontaktieren - wir können das über HTTPS absichern!

Außerdem besteht die Möglichkeit die Mail per PGP zu verschlüsseln, dazu brauchen Sie einen (open) PGP oder GnuGP Public Key, den Sie bitte an den Webmaster senden, der Ihnen dann mitteilt, welchen Parameter Sie im Feld pgpuserid übermitteln müssen.
Der Absender wird in diesem Fall die Bestätigungs-E-Mail nicht lesen können, es ist also sinnlos eine zu senden (d.h. das E-Mail-Feld sollte dann - um Verwirrungen zu vermeiden - nicht Mail sondern z.B. E-Mail genannt werden.

Für Tagungen etc. kann Ihnen der ZID auch Planungshilfe etc. anbieten, wenden Sie sich dazu an events@TUGraz.at.

Gilt nur für Institute, nicht für student-User!