| Code Perl |
sub Parser {local ($FORM) = @_;
local $in;
if ($ENV{'REQUEST_METHOD'} eq 'GET') {$in = $ENV{'QUERY_STRING'}}
elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {read(STDIN, $in, $ENV{'CONTENT_LENGTH'})}
else {return 1}
if (length($in)>20000) {return 2};
$in =~ s/%(0[aAdD])/pack("C",hex($1))/eg; if ($in=~/%([0-1][0-9a-fA-F])/) {return 3};
my @pairs = split(/&/, $in);
foreach (@pairs) {
local ($nom, $val) = split(/=/, $_);
$nom =~ tr/+/ /; $nom =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $nom =~ tr/\0//d;
$val =~ tr/+/ /; $val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $val =~ tr/\0//d;
if ($$FORM{$nom} eq '') {$$FORM{$nom} = $val} else {$$FORM{$nom} = "$$FORM{$nom},$val"}
}
return 0;
}
|