You are here: Wissensbasis Web>KommentiertesCgiSkript (2003-03-24)

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
Topic revision: 2003-03-24, HaraldBongartz
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.