You are here

Perl - Formulare

# Parameterübergabe an den Webserver
 
    # Parameterübergabe mit Get
        # Informationen wird an URL angehängt
        # z.B. http://www.xyz.com/prog.cgi?feld1=value1&feld2=value2
            # normale URL
            # ?
            # Attribut=Wert
            # &
            # Attribut=Wert
 
            # Hexadecimal-Darstellung wird mit % eingeleitet
            # + statt Leerzeichen
 
        # <form method="get" action="/cgi-bin/prog.cgi">
        #     ...
        # </form>
 
    # Parameterübergabe mit Post
        # Übertragung im Request (unbegränzte Länge)
 
        # <form method="post" action="/cgi-bin/prog.cgi">
        #     ...
        # </form>
 
 
# Eingabefelder
    # einzeiliges Eingabefeld
        # <input type=text name="name1" size=60 maxlength=80>
 
    # mehrzeiliges Eingabefeld
        # <textarea name="name2" rows=15 cols=40>
        #     Dieser Text erscheint im Textfeld als Vorbelegung.
        # </textarea>
 
    # Auswahllisten-Felder
        # <select name="auswahl" size=1 multiple>
        #     <option value="1"> Anzeigename1
        #     <option value="2" selected> Anzeigename2
        #     <option value="3"> Anzeigename3
        # </select>
 
    # Radiobuttons
        # <input type=radio name="name3" value="wert1"> Anzeigename1
        # <input type=radio name="name3" value="wert2"> Anzeigename2
        # <input type=radio name="name3" value="wert3"> Anzeigename3
 
    # Checkboxen
        # <input type=checkbox name="name4" value="wert1"> Anzeigename1
        # <input type=checkbox name="name4" value="wert2"> Anzeigename2
        # <input type=checkbox name="name4" value="wert3"> Anzeigename3
 
    # Formular absenden
        # <input type=submit value="Formular abschicken">
 
    # Formular rücksetzen
        # <input type=reset value="Inhalt löschen">
 
 
# Formular-Daten lesen
    sub CGIDatenlesen
    {
        local $cgidaten;
 
        if ($ENV{"REQUEST_METHOD"} eq "POST") # Erkennen der Sende-Methode
        {
            # bei der Post-Methode wird von der Standard-Eingabe lesen
            read (STDIN, $cgidaten, $ENV{"CONTENT_LENGTH"});
        }
        else
        {
            # bei der Get-Methode wird der Query_String verwendet
            $cgidaten = $ENV{"QUERY_STRING"};
        }
 
        return $cgidaten;
    }
 
 
# CGI Daten Aufbereiten
    sub CGIDatenaufbereiter
    {
        local ($cgidatenskalar, $name, $daten);
        local @cgidatenliste;
        local %cgidatenhash;
 
        # Übergegebene Daten zwischenspeichern
        if ($_[0])
        {
            $cgidatenskalar = $_[0];
        }
        else
        {
            print STDERR "Es wurden keine Daten uebergeben\n";
        }
 
        # einzelne Daten teilen
        @cgidatenliste = split(/[&;]/ , $cgidatenskalar);
 
        foreach $listeneintrag (@cgidatenliste) # für jede Daten
        {
            # "+" durch Leerzeichen ersetzen
            $listeneintrag =~ s/\+/ /go;
 
            # in Variablenname und -wert trennen
            ($name, $daten) = split( /=/ , $listeneintrag);
 
            # Hexwerte durch Zeichen ersetzen
            $name =~ s/\%(..)/pack("c",hex($1))/ge;
            $daten =~ s/\%(..)/pack("c",hex($1))/ge;
 
            # Key-Werte-Paar dem Hash hinzufügen
            $cgidatenhash{$name} = $daten;
        }
 
        # getrennte Daten retournieren
        return %cgidatenhash;
    }
 
 
# weitere CGI-Umgebungsvariablen
    # DOCUMENT_ROOT         Absoluter Pfad der Document-Root
    # GATEWAY_INTERFACE     vom Web-Server verwendete CGI-Version
    # HTTP_ACCEPT           welche Dateiformate vom Benutzer akzeptiert werden
    # HTTP_ACCEPT_LANGUAGE  eingestellte Browser-Sprache
    # HTTP_HOST             Hostname des Web-Servers
    # HTTP_REFERER          Aufrufer
    # HTTP_USER_AGENT       Bezeichnung des Web-Clients
    # PATH                  vom CGI-Skript sichtbarer Pfad
    # PATH_INFO             an die URL hinzugefügte Pfad
    # PATH_TRANSLATED       absoluter Pfad des CGI-Skripts
    # QUERY_STRING          alles nach dem ? in der URL - bei der Get-Methode
    # REMOTE_ADDR           IP-Adresse des Client-Hosts
    # REMOTE_HOST           FQDN (DNS) des Client-Hosts
    # REMOTE_PORT           lokaler TCP-Port des Clients
    # REMOTE_USER           Name des entfernten Users (bei Authentifizierung)
    # REQUEST_METHOD        HTTP-Methode: Get, Post
    # SCRIPT_FILENAME       absoluter Name des CGI-Skripts
    # SCRIPT_NAME           Name des CGI-Skripts (relativ zur Document-Root)
    # SERVER_NAME           Name des Web-Servers
    # SERVER_PORT           HTTP-Port, auf dem der Server kontaktiert wurde
    # SERVER_PROTOCOL       Protokoll zwischen Server und Client
    # SERVER_SOFTWARE       Web-Server-Software-Information