Programmation cgi
&
Perl

 


- cgi       1 -


Hello World

Nous allons écrire un script pour afficher Hello World en réponse à un clic dans un document
HTML

cgi1 .pl

 

#!/usr/local/bin/perl5
print "Content-type: text/html\n\n"; # Le format des données et une ligne vierge
# Les données affichées par le client sous forme HTML
print "<html><head><title>Hello World</title></head>";
print "<body>";
print "Hello World";
print "</body>";
print "</html>";
 

 

cgi1.htm



<html>
<head><title>Essai CGI Hello World</title></head>
<body>
<form method="get" action="/cgi-bin/cgi1.pl">
<input type="submit" value="Afficher">
</form>
</body>
</html>
 

#!/usr/local/bin/perl5      Demande au serveur d'appler l'interpréteur PERL dans /usr/local/perl5
                                     à changer selon l'emplacement du PERL


- cgi       2 -

Afficher en Couleurs

cgi2.pl

 

#!/usr/local/bin/perl5

print "Content-type: text/html\n\n";
print "<html><head><title>CGI 2</title></head>";
print "<body><h3><font color=\"blue\">Hello World";
print "</body>";
print "</html>";

exit(0);
 

cgi2.htm


 
<html>
<head><title>Test CGI2</title></head>
<body>
<form method="get" action="/cgi-bin/cgi2.pl">
<input type="submit" value="Afficher">
</form>
</body>
</html>
 

 


- cgi       3 -

Afficher en format texte

Pour afficher du texte ordinaire, il suffit de spécifier le format texte pour les données.

print "Content-type: text/plain\n\n"; 

cgi3.pl 

 

#!/usr/local/bin/perl

print "Content-type: text/plain\n\n";
print "Texte Ordinaire";
exit(0);
 

 

cgi3.htm


 
<html>
<head><title>Test CGI3</title></head>
<body>
<form method="get" action="/cgi-bin/cgi3.pl">
<input type="submit" value="Afficher">
</form>
</body>
</html>
 

 


- cgi       4 -

GET ou POST
Les variables d'environnement sont dans un tableau associatif Perl : %ENV
Il est facile dans ce cas d'obtenir la méthode utilisée par la requête ; GET ou POST en accedant à la variable d'environnement REQUEST_METHOD comme suite :
$methode=$ENV{'REQUEST_METHOD'};

cgi4.pl

 

#!/usr/local/bin/perl5

$methode=$ENV{'REQUEST_METHOD'}; # méthode utilisée par la requête
print "Content-type: text/html\n\n";
print "<html><head><title>Test CGI4</title></head>";
print "<body>Méthode : <font color=\"red\">$methode";
print "</body>";
print "</html>";
exit(0);
 

 

cgi4.htm


 
<html><head><title>Test CGI4</title></head>
<body>
<form method="post" action="/cgi-bin/cgi4.pl">
<input type="submit" value="Affichier M&eacute;thode">
</form>
</body>
</html>
 

 


- cgi       5 -

 

Les Données et GET
Avec la méthode GET les données sont gardées dans une variable d'environnement :
QUERY_STRING. Pour récupérer ces données, il suffit d'une instruction comme
$donnees=$ENV{'QUERY_STRING'};

cgi5.pl

 

#!/usr/local/bin/perl5

$donnees=$ENV{'QUERY_STRING'}; # les données sont dans QUERY_STRING
print "Content-type: text/html\n\n";
print "<html><head><title>Test CGI5</title></head>";
print "<body>Les Donn&eacute;es sont: <font color=\"red\">$donnees";
print "</body>";
print "</html>";
exit(0);
 

 

cgi5.htm


 
<html><head><title>Test CGI5</title></head>
<body>
<form method="get" action="/cgi-bin/cgi5.pl">
Nom : <input type="text" name="nom">
<input type="submit" value="Envoi">
</form>
</body>
</html>
 

 

- cgi       6 -

 

Les Données avec POST
Avec la méthode POST les données sont lues sur le flux d'entrée STDIN. La variable d'environnement CONTENT_LENGTH indique la taille des données.
$taille=$ENV{'CONTENT_LENGTH'};   # obtenir la taille des données
read(STDIN,$buff,$taille); # lire sur l'entrée standard et mettre les données dans $buff

cgi6.pl

 

#!/usr/local/bin/perl5

$taille=$ENV{'CONTENT_LENGTH'}; # taille données
read(STDIN,$buff,$taille);
print "Content-type: text/html\n\n";
print "<html><head><title>Test CGI6</title></head>";
print "<body>Les Donn&eacute;es sont: <font color=\"red\">$buff";
print "</body>";
print "</html>";
exit(0);
 

 

cgi6.htm


 
<html><head><title>Test CGI6</title></head>
<body>
<form method="post" action="/cgi-bin/cgi6.pl">
Nom : <input type="text" name="nom">
<input type="submit" value="Envoi">
</form>
</body>
</html>