Ein einfaches, kommentiertes CGI Skript mit CGI.pm
#!/usr/bin/perl
# wir wollen ueber alle Probleme informiert werden
use warnings;
use strict;
# CGI.pm benutzen, dabei alle Standardbefehle wie header(),
# start_html(), h1() etc. exportieren.
use CGI qw(:standard);
# HTTP-Header und HTML-Anfang mit CGI.pm ausgeben.
# header() erzeugt u.a. den "Content-type", start_html() das
# ganze HTML-Brimborium am Anfang. Das h1() produziert
# einen <h1> Tag.
print header(), start_html('Einfache Testseite'),
h1('Einfache Testseite');
# Wenn Parameter uebergeben wurden, gib diese aus.
# Die Funktion param() aus CGI.pm liefert die CGI-Parameter
# zurueck. Ohne Argument wird die Liste aller Parameter
# zurueckgeliefert, im skalaren Kontext ergibt das einfach die
# Anzahl dieser Parameter.
# Mit "if (param()) ..." kann man also testen, ob Parameter
# vorhanden sind, sprich: ob dieses Script aus einem Formular
# aufgerufen wurde. Wenn ich die Skriptadresse einfach im Browser
# eingebe oder ich durch einen Link auf das Skript komme, sind ja
# noch keine Parameter vorhanden, dann wird der folgende Teil also
# nicht ausgegeben.
if (param()) {
# Wenn Parameter vorhanden sind, gib sie in einer Tabelle aus.
print '<b>Sie haben Folgendes eingegeben:</b><br>
<table cellspacing=0 cellpadding=5>';
# Zwei Hintergrundfarben fuer die Tabelle
my @bg = ("#E0E0E0", "#F0F0F0");
my $col = 0;
# Parameter nacheinander ausgeben, dabei die Hintergrundfarbe
# zwischen den beiden Farben in @bg wechseln.
for my $name (param()) {
print qq{<tr bgcolor="$bg[$col]"><td><b>$name</b></td><td>},
param($name), }</td></tr>\n";
$col = 1-$col; # Farbe wechseln
}
# An dieser Stelle koennte man auch die Parameter irgendwo
# speichern. Alle Parameter bekommt man ueber param(), einen
# einzelnen ueber param('parametername').
# Der Webserver muss natuerlich in die Datei schreiben duerfen!
if (open (FH, "> test.dat")) {
save_parameters(*FH);
close FH;
} else {
print qq{<p><font color="red">Konnte Parameter nicht speichern!</font></p>\n};
}
# Hier ist das Ende der Tabelle mit den uebergebenen
# Parametern.
print qq{</table><h3 width="20%">};
}
# In self_url() steht die URL dieses Skriptes selber. Damit kann ich
# unten im Text dafuer sorgen, dass das erzeugte Formular sich
# selber wieder aufruft.
my $self = self_url();
# Hier wird das eigentliche Formular in einem here-document ausgegeben.
print <<FORMULAR;
<p>
<form action="$self" method=POST>
<table>
<tr bgcolor="#E0E0E0"><td>Name: </td><td><input type=text name=name maxlength=50 size=20></td></tr>
<tr bgcolor="#E0E0E0"><td>Vorname: </td><td><input type=text name=vorname maxlength=50 size=20></td></tr>
<tr bgcolor="#E0E0E0"><td>Alter: </td><td><input type=text name=alter maxlength=4 size=3></td></tr>
<tr bgcolor="#E0E0E0"><td>Adresse: </td><td><input type=text name=adresse maxlength=100 size=30></td></tr>
</table>
<input type=submit name="Absenden">
</form>
</p>
FORMULAR
# Ende des HTML-Codes
print end_html;
# Programmende
--
HaraldBongartz - 24 Mar 2003