GET
consiste à ajouter à l'URL la chaine
d'encodage des infos du formulaire.QUERY_STRING
POST
, la même chaine est expédiée
sur l'entrée standard du script de CGI
connecté à
la soumission du formulaire.
#recupere le contenu de la variable d'environnement $input = $ENV{"QUERY_STRING"}; #dissocie la chaine de caracteres en une liste @liste= split(/&/,$input); #parcours de la liste foreach (@liste) { #dissocie la paire nom=valeur ($name,$value)= split(/=/, $_); #decode les valeurs $name =~ s/%(..)/pack("c",hex($1))/ge; $value =~ s/%(..)/pack("c",hex($1))/ge; #Traitement des données .... }
#recupere le contenu du buffer de l'entrée standard STDIN $in = <STDIN>; #supprime les deux CRLF inseres par le protocole HTTP chop($in); chop($in); #dissocie la chaine de caractere en une liste @liste = split(/&/,$in); #parcours de la liste foreach(@liste) { #dissocie la paire nom=valeur ($nom,$valeur)= split(/=/, $_); #decode les valeurs $nom =~ s/%(..)/pack("c",hex($1))/ge; $valeur =~ s/%(..)/pack("c",hex($1))/ge; #Traitement des donnees ... }
p00
Formulaire |
Code du formulaire<FORM ACTION="http://p00/cgi-bin/formu2.pl" METHOD=POST> <H1><DIV ALIGN="center">Traitement de formulaire par PERL</DIV></H1> Indiquez : Nom <INPUT TYPE="text" NAME="nom" SIZE=25 value="Toto"> Prénom <INPUT TYPE="text" NAME="prenom" SIZE=25 value="Jules"> Sexe <INPUT TYPE="radio" NAME="sexe" VALUE="féminin"> féminin <INPUT TYPE="radio" NAME="sexe" VALUE="masculin" CHECKED> masculin Profession <input type="radio" checked NAME="profession" VALUE=enseignant> enseignant <input type="radio" NAME="profession" VALUE="formateur" > formateur <P> <INPUT TYPE="submit" VALUE="Valider"> <INPUT TYPE="reset" VALUE="Effacer"> </FORM> |
Le script PerlLa validation du formulaire par clic sur le boutonsubmit provoque l'appel au script formu2.pl , écrit en PERL et situé réellement sur le serveur p00 à /home/httpd/cgi-bin/formu.pl
#!/usr/bin/perl
# exécution de /home/httpd/cgi-bin/formu.pl
# récupère l'entrée standard dans la variable $in
read(STDIN, $in, $ENV{CONTENT_LENGTH});
# la chaine $in est coupée suivant le caractère & et crée la liste @champs
@champs = split(/&/,$in);
# traitement de chaque élément $e de la liste @champs
foreach $e (@champs) {
# dissocie chaque élément, de la forme nom=valeur,
# en une paire de variable (nom,valeur)
($nom, $valeur) = split(/=/,$e);
# transforme tous les caractères saisis en minuscules
$valeur =~ tr/A-Z/a-z/;
# crée à partir du tableau @champs,
# une liste associative
|
Attention !
#!/usr/bin/perl
ne doit pas être précédée d'espace
vi
révèle des ^M
à supprimer.