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
| #====================================================================#
# Réception des données #
#====================================================================#
sub receivepost {
my %postdata;
my ($len,$d,$data,$nom,$valeur);
if ($ENV{'REQUEST_METHOD'} =~ /post/i) {
# Longueur de l envoi
$len = $ENV{'CONTENT_LENGTH'};
$data = '';
# On lit les données envoyées
if (read(STDIN,$data,$len) != $len) {
# tout n est pas lu ... erreur de transmission
print "Location: error.htm\n\n";
die("Error reading 'POST' data\n") ;
}
# séparation de la chaine par paires
foreach $d (split('&',$data)) {
# séparer les paires nom=valeur
($nom,$valeur) = split('=',$d);
$nom = url_decode($nom);
$valeur = url_decode($valeur);
# $valeur = encode_entities($valeur);
# ranger les paires dans %postdata
$postdata{$nom} = $valeur;
}
}
return %postdata ;
}
#====================================================================#
# Décodage des données transmise #
#====================================================================#
sub url_decode {
my $s = shift;
$s =~ tr/+/ /;
$s =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C",oct("0x$1"))/ge;
return $s;
} |
Partager