%_GET = map { $_ => get_data($_) } param;
sub get_data {
my $name = shift;
my @values = param($name);
return @values > 1 ? \@values : $values[0];
}
$fileupload++ if lc($ENV{CONTENT_TYPE}) =~ m'multipart/form-data;'; #ck if file upload - bail if it is
if (!$fileupload) {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
$buffer = $ENV{QUERY_STRING} if (length($buffer) < 3);
if (length($buffer)> 130000) {
die("Request to receive too much data\n"); #die if spammers and jammers
exit;
}
@pairs = split(/&/, $buffer); #get name/value pairs
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$name =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; #clean junk chars
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value; #now passed vars are in $FORM{}
}