Zum Hauptinhalt springen

Perl - Forms

  1# Parameteruebergabe an den Webserver
  2
  3    # Parameteruebergabe mit Get
  4        # Informationen wird an URL angehaengt
  5        # z.B. http://www.xyz.com/prog.cgi?feld1=value1&feld2=value2
  6            # normale URL
  7            # ?
  8            # Attribut=Wert
  9            # &
 10            # Attribut=Wert
 11        
 12            # Hexadecimal-Darstellung wird mit % eingeleitet
 13            # + statt Leerzeichen
 14
 15        # <form method="get" action="/cgi-bin/prog.cgi">
 16        #     ...
 17        # </form>
 18    
 19    # Parameteruebergabe mit Post
 20        # Uebertragung im Request (unbegraenzte Laenge)
 21
 22        # <form method="post" action="/cgi-bin/prog.cgi">
 23        #     ...
 24        # </form>
 25
 26
 27# Eingabefelder
 28    # einzeiliges Eingabefeld
 29        # <input type=text name="name1" size=60 maxlength=80>
 30    
 31    # mehrzeiliges Eingabefeld
 32        # <textarea name="name2" rows=15 cols=40>
 33        #     Dieser Text erscheint im Textfeld als Vorbelegung.
 34        # </textarea>
 35    
 36    # Auswahllisten-Felder
 37        # <select name="auswahl" size=1 multiple>
 38        #     <option value="1"> Anzeigename1
 39        #     <option value="2" selected> Anzeigename2
 40        #     <option value="3"> Anzeigename3
 41        # </select>
 42
 43    # Radiobuttons
 44        # <input type=radio name="name3" value="wert1"> Anzeigename1
 45        # <input type=radio name="name3" value="wert2"> Anzeigename2
 46        # <input type=radio name="name3" value="wert3"> Anzeigename3
 47
 48    # Checkboxen
 49        # <input type=checkbox name="name4" value="wert1"> Anzeigename1
 50        # <input type=checkbox name="name4" value="wert2"> Anzeigename2
 51        # <input type=checkbox name="name4" value="wert3"> Anzeigename3
 52    
 53    # Formular absenden
 54        # <input type=submit value="Formular abschicken">
 55    
 56    # Formular ruecksetzen
 57        # <input type=reset value="Inhalt loeschen">
 58
 59
 60# Formular-Daten lesen
 61    sub CGIDatenlesen
 62    {
 63        local $cgidaten;
 64        
 65        if ($ENV{"REQUEST_METHOD"} eq "POST") # Erkennen der Sende-Methode
 66        {
 67            # bei der Post-Methode wird von der Standard-Eingabe lesen
 68            read (STDIN, $cgidaten, $ENV{"CONTENT_LENGTH"});
 69        }
 70        else
 71        {
 72            # bei der Get-Methode wird der Query_String verwendet
 73            $cgidaten = $ENV{"QUERY_STRING"};
 74        }
 75        
 76        return $cgidaten;
 77    }
 78
 79
 80# CGI Daten Aufbereiten
 81    sub CGIDatenaufbereiter
 82    {
 83        local ($cgidatenskalar, $name, $daten);
 84        local @cgidatenliste;
 85        local %cgidatenhash;
 86        
 87        # Uebergegebene Daten zwischenspeichern
 88        if ($_[0])
 89        {
 90            $cgidatenskalar = $_[0];
 91        }
 92        else
 93        {
 94            print STDERR "Es wurden keine Daten uebergeben\n";
 95        }
 96        
 97        # einzelne Daten teilen
 98        @cgidatenliste = split(/[&;]/ , $cgidatenskalar);
 99        
100        foreach $listeneintrag (@cgidatenliste) # fuer jede Daten
101        {
102            # "+" durch Leerzeichen ersetzen
103            $listeneintrag =~ s/\+/ /go;
104            
105            # in Variablenname und -wert trennen
106            ($name, $daten) = split( /=/ , $listeneintrag);
107            
108            # Hexwerte durch Zeichen ersetzen
109            $name =~ s/\%(..)/pack("c",hex($1))/ge;
110            $daten =~ s/\%(..)/pack("c",hex($1))/ge;
111            
112            # Key-Werte-Paar dem Hash hinzuf�gen
113            $cgidatenhash{$name} = $daten;
114        }
115        
116        # getrennte Daten retournieren
117        return %cgidatenhash;
118    }
119
120
121# weitere CGI-Umgebungsvariablen
122    # DOCUMENT_ROOT         Absoluter Pfad der Document-Root
123    # GATEWAY_INTERFACE     vom Web-Server verwendete CGI-Version
124    # HTTP_ACCEPT           welche Dateiformate vom Benutzer akzeptiert werden
125    # HTTP_ACCEPT_LANGUAGE  eingestellte Browser-Sprache
126    # HTTP_HOST             Hostname des Web-Servers
127    # HTTP_REFERER          Aufrufer
128    # HTTP_USER_AGENT       Bezeichnung des Web-Clients
129    # PATH                  vom CGI-Skript sichtbarer Pfad
130    # PATH_INFO             an die URL hinzugefuegte Pfad
131    # PATH_TRANSLATED       absoluter Pfad des CGI-Skripts
132    # QUERY_STRING          alles nach dem ? in der URL - bei der Get-Methode
133    # REMOTE_ADDR           IP-Adresse des Client-Hosts
134    # REMOTE_HOST           FQDN (DNS) des Client-Hosts
135    # REMOTE_PORT           lokaler TCP-Port des Clients
136    # REMOTE_USER           Name des entfernten Users (bei Authentifizierung)
137    # REQUEST_METHOD        HTTP-Methode: Get, Post
138    # SCRIPT_FILENAME       absoluter Name des CGI-Skripts
139    # SCRIPT_NAME           Name des CGI-Skripts (relativ zur Document-Root)
140    # SERVER_NAME           Name des Web-Servers
141    # SERVER_PORT           HTTP-Port, auf dem der Server kontaktiert wurde
142    # SERVER_PROTOCOL       Protokoll zwischen Server und Client
143    # SERVER_SOFTWARE       Web-Server-Software-Information