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