Alianwebserver.com

Retour au sommaire

Utilisation de CGI.pm

Voir aussi la rubrique Perl 

La documention anglaise du module CGI.pm est disponible au format HTML ici.

Documentation

Pour obtenir la documentation de ce module, faire perldoc CGI.

"Hello World !"

Pour commencer, voici le fameux CGI 'Hello World' ...

 #!/usr/bin/perl -Tw
 # Chemin de Perl. Voir perldoc perlrun pour les options
 
 # Génération de l'entete Mime. OBLIGATOIRE
 # Echec 500 erreur serveur si qqc généré sur
 #la sortie standart avant.
 print "Content-type: text/html\n\n";

 # notre "salut le monde !"
 print "Hello World !<br>\n";

Les paramètres dans un CGI

Les paramètres peuvent être passés à un CGI via un formulaire HTML ou via Javascript. Si la méthode GET est utilisé, la variable d'environnement QUERY_STRING contient les données, sinon (POST) c'est sur l'entrée standart que le script peut lire les données.

Celles-ci sont fournies avec des clés nom=valeur, entouré par des & et commençant par ?. De plus les caractères autres que les chiffres et lettres doivent être uuencodé (Exemple Espace--> %20). Vous avez suivi ? ;) Dans le cas d'un formulaire, cet encodage est automatique, mais on peut le faire manuellement à l'aide de Javascript, aidé par la méthode escape() pour encoder les paramètres.

Exemple : (Via la méthode GET)
http://127.0.0.1/cgi-bin/moncgi?nom=toto&famille=rocco
Ici les paramètres nom et famille de valeurs respectives toto et rocco sont soumises au CGI.

Il serait facile de décoder ces paramètres par quelques if bien sentis sur les bonnes variables. Ceci dit, mieux vaut utiliser les librairies standarts : CGI.pm (Dans les versions 4 de Perl c'était cgi-lib.pl devenu CGILite.pm).

Ces librairies en plus de décoder les paramètres permettent de récupérer des fichiers postés, généré les bons entêtes Mimes, faire des redirections d'URL, positionner des cookies, ....

Utilisation de CGI.pm

Cette librairie est maintenant installée avec les nouveles distributions de Perl..

Récupération des paramètres

(Suite à l'appel de l'URL http://127.0.0.1/cgi-bin/moncgi?nom=toto&famille=rocco )

#!/usr/bin/perl -Tw
use CGI qw(:standard);
use CGI::Carp qw/fatalsToBrowser/;
use strict;
use diagnostics;
 
# Génération de l'entete MIME
print header;
 
# Generation de la page
my $buf = "<html><head>my first CGI</head><body>".
 "Vous vous appelez ".param('nom').
 "et vous êtes de la famille " . param('famille').
 "</body></html>";
print $buf;

Les paramètres sont donc passés au CGI, décodés par le module CGI, puis pour accéder aux différentes variables, utliser le symbole param('nom du parametre');. Exemple pour le paramètre de nom famille la valeur peut être récupéré par

$valeur=param('famille');

Lister les noms de variables d'un formulaire :

#!/usr/bin/perl -Tw


use CGI; 
my $cgi=new CGI; 
print header; 
my @param=$cgi->param();          
foreach (@param) {print "$_ ";} print "OK"; 

Utilisation de CGI.pm pour le formatage HTML

Un certain nombre de fonctions ont été définies pour permettre d'utiliser le HTML plus facilement L'exemple précédent donnerait :

#!/usr/bin/perl -Tw
use strict;
use diagnostics;
use CGI qw(:standard);
use CGI::Carp qw/fatalsToBrowser/;

# Generation de la page
my $buf = header.
          start_html(-"title"=>'my first CGI',
                    -bgcolor=>#FFFFFF).
          "Vous vous appelez " . param('nom').
          "et vous êtes de la famille ".param('famille').end_html;
print $buf;

En général, le nom de la fonction correspond à la balise HTML. Exemple :

Génération d'un lien :

print a(href=>'default.htm',  "my link");