Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/perl -w
# Die 1. Zeile ist die Shebang-Zeile und enthält den Pfad zum Perl-Interpreter
## echo.pl
## Dieses Perl-Skript schickt Formulardaten an den Client zurück
## Bernhard Kreling, 26.4.2011
## Ralf Hahn, 17.04.2012 Anpassung auf HTML5 und Validator
# HTTP-Header für Antwort an Browser:
print "Content-type: text/html\n\n";
# HTML-Datei schreiben:
print '<!DOCTYPE html>', "\n";
print '<html lang="de">', "\n";
print "<head>\n";
print ' <meta charset="UTF-8" />', "\n";
print " <title>CGI-Formular-Echo</title>\n";
print "</head>\n";
print "<body>\n";
print " <h3>Formular-Echo</h3>\n";
print " <p>Sie haben folgende Formulardaten mit der Methode ";
# Formulardaten übernehmen abhängig von der Request-Methode:
my $ParameterString;
if ($ENV{'REQUEST_METHOD'} eq 'GET')
{
print "GET";
$ParameterString = $ENV{'QUERY_STRING'};
}
elsif($ENV{'REQUEST_METHOD'} eq 'POST')
{
print "POST";
read(STDIN, $ParameterString, $ENV{'CONTENT_LENGTH'});
# auf mmlab erscheint die Meldung "HTTP/1.1 100 Continue" - warum auch immer...
}
print " übermittelt.</p>\n";
# Formulardaten als undekodierten String zurücksenden:
my $EscapedParameterString;
$EscapedParameterString = $ParameterString;
$EscapedParameterString =~ s/&/&/g;
print " <p><strong>ParameterString:</strong><br> $EscapedParameterString </p>\n";
# Formulardaten in einzelne Parameter zerlegen mit '&' als Trenner:
my @ParameterListe = split(/&/, $ParameterString);
print " <p><strong>Einzelne Parameter:</strong><br>\n";
my $Parameter;
foreach $Parameter (@ParameterListe)
{
# Parameter in Name und Wert zerlegen mit '=' als Trenner:
my $Name;
my $Wert;
($Name, $Wert) = split(/=/, $Parameter);
# Leerstellen restaurieren ('+' ersetzen durch ' '):
$Wert =~ tr/+/ /;
# Hex-Codes %xx umwandeln in Character:
$Wert =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C" , hex($1))/eg;
# HTML-Sonderzeichen '&', '<', '>' kodieren:
$Wert =~ s/&/&/;
$Wert =~ s/</</;
$Wert =~ s/>/>/;
# Parameter ausgeben in HTML-Datei:
print "$Name = $Wert <br>\n";
}
# HTML-Datei abschliessen:
print " </p>\n";
print "</body>\n";
print "</html>\n";