Perl – Formularauswertung mit CGI-LIB

Perl - Dateiupload über CGI-LIBIn diesen Workshop lernen Sie das CGI-LIB, und speziell die Formularauswertung
über Perl und diese Funktions-Library. Im ersten Teil des Workshops
lernen Sie die CGI-LIB und ihre Funktionen kennen, und Sie lernen,
ein einfaches Formular auszuwerten.

Die cgi-lib.pl ist eine der ältesten Libraries für
die Scriptsprache Perl, geschrieben von Steven E. Brenner.
Sie ist unter http://cgi-lib.berkeley.edu
herunterzuladen.

Eine Library ist eine Sammlung von häufig verwendeten Funktionen
(Routinen, Methoden), mit denen Scripte

  • besser strukturiert und damit übersichtlicher werden,
  • vereinfacht und damit der Schreibaufwand erheblich verringert
    werden kann.

Die Stärke eben dieser Library besteht darin, dass ein Script
für die Formularauswertung sehr vereinfacht werden kann.
Dabei ist es in der Regel unerheblich, ob dieses Script über
die POST- oder GET- Methode aufgerufen wurde (Die Ausnahme ist das
File-Upload).

Bekannt sind dem Autor dieses Beitrags die Versionen 1.14, 2.10
und 2.17
der cgi-lib.pl. Das File-Upload wird ab der
Version 2.17 unterstützt.

Die Funktionen cgi-lib.pl im Überblick

Zunächst die Funktionen der CGI-LIB, die in beiden Versionen
verfügbar sind.

PrintHeader()
Sendet den HTTP-Header für content-type:text/html zum
Browser.

HtmlTop()
Sendet den Dateikopf einer HTML-Datei. Im Argument kann der Titel
(Überschrift) angegeben werden.

HtmlBot()
Schließt eine HTML-Datei (sendet den Fussteil der Datei
zum Browser).

ReadParse()
Liest ein Formular aus, POST oder GET. Die umfangreichste Funktion
in dieser Library.Standardmäßig liest die Funktion auf
(*in), kann auch anders benannt werden.
Das Argument ist der Name für den Hash, welcher die Feldnamen
und Values beinhaltet. Der Rückgabewert ist größer
0, wenn ein Input vorlag, ansonsten 0.

PrintVariables()
Gibt den Hash %in, also alle Formulardaten, im Browser aus – formatiert.

MethGet()
Prüft, ob die Get-Methode verwendet wurde. Gibt TRUE zurück,
wenn die Methode Get verwendet wurde, ansonsten FALSE.

MethPost()
Prüft, ob die Post-Methode verwendet wurde. Gibt TRUE zurück,
wenn die Methode Post verwendet wurde, ansonsten FALSE.

CgiError()
Gibt eine Fehlermeldung aus. Die Fehlermeldung kann selbst definiert
werden. Wird der Funktion im Argument übergeben.

CgiDie()
Dient dazu, die weitere Scriptverarbeitung abzubrechen. Die selbstdefinierte
Fehlermeldung, die ausgegeben werden soll. Es sind 2 Argumente möglich.


Funktionen der CGI-LIB ab Version 2

PrintEnv()
Gibt die CGI-Umgebung schön formatiert im Browser aus.

MyBaseUrl(), MyFullUrl(), MyURL()
Verschiedene Funktionen, die den URL des Scripts ermitteln.

SplitParam()
Splittet einen Parameter nach Wertkategorien.

Einfache Formularauswertung

Das HTML-Formular:

<form action="/cgi-bin/bsp1.pl" method=post>
Name:      <input name="mein name" size=40>
Männlich: <input type=radio name="mein geschlecht"
value="männlich" checked>
Weiblich: <input type=radio name="mein geschlecht"
value=weiblich>
Alter:    <input size=3 name="mein alter">
Hobbies:  <textarea rows=3 cols=34 wrap=physical
name="meine hobbies"></textarea>
          <input type=submit value="wer bin ich?">
</form>

Das CGI-Script zur Auswertung des Formulars:


#!/usr/bin/perl
require 'cgi-lib.pl';
# so wird die lib eingebunden, Pfad beachten
print PrintHeader();
# sendet den Header mit 1 Leerzeile
print HtmlTop('Persönlichkeitsbewertung');
# Kopf der HTML-Seite mit Titel
ReadParse();
# Lesen der Formularfelder auf den Hash '%in'
print PrintVariables();
# eine einfache Ausgabe der Formularfelder
print HtmlBot();
 # Schluß der HTML-Seite

Erläuterung:

Das Herzstück für die Auswertung von Formulareingaben
ist die Funktion ReadParse(). Diese Funktion liest
die Inputfelder des Formulars auf den Hash %in
der auch einen anderen Namen haben kann, das geschieht im Argument
der Funktion. Für eine einfache Ausgabe der Formulareingaben
in den Browser kann die Funktion PrintVariables()
verwendet werden, PrintVariables() gibt die
Namen der Inputfelder und deren Values schön geordnet aus.
Es kann auf jedes Formularfeld über $in
{'feldname'}
zugegriffen werden. Damit wird auch die korrekte Namensgebung
der Inputfelder (HTML-Attribut name=) deutlich.
Das Abfragen von Benutzereingaben über Textfelder, Checkboxen
usw. wird durch die Verwendung der cgi-lib.pl wesentlich
vereinfacht!
Die CGI – LIB herunterladen:
http://cgi-lib.berkeley.edu

Vielen dank an Herr Rolf Rost von I-NetLab,
der uns den Artikel zur Verfügung gestellt hat. Bei Fragen
können Sie sich an ihn wenden. Auf seiner Webseite finden Sie
ein Kontakt-Formular.

This entry was posted in Perl. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *