Dernière mise à jour : 26/05/2016
Créez un formulaire HTML qui permet de saisir un nom, un prénom et un e-mail. Le script contrôlera la validité des données comme suit.
Le nom et le prénom devront être non null. L'e-mail devra contenir un et un seul caractère '@'. Il devra y avoir un et un seul point derrière le caractère '@'. Les chaînes de caractères se trouvant devant '@', entre '@' et le point, et derrière le point devront être non null.
S'il y a une erreur, le formulaire serra réaffiché. Les champs dont les valeurs sont valides seront remplis avec celles-ci et les intitulés des champs erronés seront écrits en rouge.
Si tous les champs sont valides, il faudra afficher le message suivant : "Bonjour <prénom> <nom>, je vous envoi un e-mail à l'adresse <e-mail>".
#!/usr/bin/perl ################################################################################ # (c) Sebastien ADAM - Decembre 1999 ########################################### # Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - # # Partage dans les Mêmes Conditions 2.0 Belgique. # ################################################################################ ################################################################################ # Programme principal ########################################################## ################################################################################ &initcolor; print "content-type: text/html\n\n"; if(!&ReadIn) { &form; } else { $ok = 1; &testnom; &testprenom; &testemail; if($ok) { &reponse; } else { &form; } } ################################################################################ # Fin programme principal ###################################################### ################################################################################ ################################################################################ # Fonctions #################################################################### ################################################################################ # Test validite e-mail ######################################################### sub testemail { if($in{'email'}) { @tmp = split(/@/, $in{'email'}); if($#tmp != 1) { &nomail; } else { if($tmp[0] && $tmp[1]) { @tmp = split(/\./, $tmp[1]); if($#tmp != 1) { &nomail; } else { if(!($tmp[0] && $tmp[1])) { &nomail; } } } else { &nomail; } } } else { &nomail; } } sub nomail { $txtcol{'email'} = $couleur{'rouge'}; $ok = 0; $in{'email'} = ""; } # Fin test validite e-mail ##################################################### # Test validite prenom ######################################################### sub testprenom { if(!$in{'prenom'}) { $txtcol{'prenom'} = $couleur{'rouge'}; $ok = 0; } } # Fin test validite prenom ##################################################### # Test validite nom ############################################################ sub testnom { if(!$in{'nom'}) { $txtcol{'nom'} = $couleur{'rouge'}; $ok = 0; } } # Fin test validite nom ######################################################## # Formulaire de depart ######################################################### sub form { print << FINPRINT <html> <head> <title>Test script CGI</title> <head> <body bgcolor="$couleur{'blanc'}"> <h1 align="center">Formulaire d'enregistrement :</h1> <form method="post" action="http://localhost/cgi-bin/mail.pl"> <table border="0"> <tr> <td><font color="$txtcol{'nom'}">Nom</font></td><td>: <input type="text" name="nom" value="$in{'nom'}"></td> </tr><tr> <td><font color="$txtcol{'prenom'}">Prénom</font></td><td>: <input type="text" name="prenom" value="$in{'prenom'}"></td> </tr><tr> <td><font color="$txtcol{'email'}">E-mail</font></td><td>: <input type="text" name="email" value="$in{'email'}"></td> </tr> </table> <center><input type="submit" value="Envoyer"> <input type="reset"></center></form> </body> </html> FINPRINT } # Fin formulaire de depart ##################################################### # Reponse ###################################################################### sub reponse { print <<" FINPRINT2"; <html> <head> <title>test script cgi</title> <head> <body bgcolor="$couleur{'blanc'}"> <p align="justify"> <font face="Courier New"> </font>Bonjour $in{'prenom'} $in{'nom'}, je vous envoie un e-mail à l'adresse $in{'email'}. </p> </body> </html> FINPRINT2 } # Fin reponse ################################################################## # Lecture donnees entree ####################################################### sub ReadIn { local(*in) = @_ if @_; local($i, $key, $val); read(STDIN, $in, $ENV{'CONTENT_LENGTH'}); @in = split(/&/,$in); foreach $i (0 .. $#in) { $in[$i] =~ s/\+/ /g; ($key, $val) = split(/=/, $in[$i],2); $key =~ s/%(..)/pack("c",hex($1))/ge; $val =~ s/%(..)/pack("c",hex($1))/ge; $in{$key} .= "" if(defined($in{$key})); $in{$key} .= $val; } return length($in); } # Fin lecture donnees entree ################################################### # Initialisation des couleurs ################################################## sub initcolor { $couleur{'noir'} = "#000000"; $couleur{'bleu'} = "#0000FF"; $couleur{'vert'} = "#00FF00"; $couleur{'cyan'} = "#00FFFF"; $couleur{'rouge'} = "#FF0000"; $couleur{'mauve'} = "#FF00FF"; $couleur{'jaune'} = "#FFFF00"; $couleur{'blanc'} = "#FFFFFF"; $txtcol{'nom'} = $couleur{'noir'}; $txtcol{'prenom'} = $couleur{'noir'}; $txtcol{'email'} = $couleur{'noir'}; } # Fin initialisation des couleurs ############################################## ################################################################################ # Fin des fonctions ############################################################ ################################################################################
© Sébastien Adam 1996 ~ 2024 - https://www.sebastienadam.be/ - .