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.

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: