CGI - Introduction à la programmation des CGI
Présentation de l'interface CGI
Un script CGI (Common Gateway Interface, traduisez interface de passerelle commune) est un programme exécuté par le serveur web (on dit généralement « côté serveur »), permettant d'envoyer au navigateur de l'internaute un code HTML créé automatiquement par le serveur (basé par exemple sur une autre application, telle qu'un système de gestion de base de données, d'où le nom de passerelle).
Un des principaux intérêts de l'utilisation de CGI est la possibilité de fournir des pages dynamiques, c'est-à-dire des pages personnalisées selon un choix ou une saisie de l'utilisateur. L'application la plus fréquente de cette technique repose sur l'utilisation de formulaires HTML permettant à l'utilisateur de choisir ou de saisir des données, puis de cliquer sur un bouton de soumission du formulaire, envoyant alors les données du formulaire en paramètre du script CGI.
Langage de programmation des CGI
Un programme CGI peut être écrit dans à peu près n'importe quel langage de programmation pourvu que celui-ci soit :
- capable de lire le flux de données d'entrée ;
- capable de traiter des chaînes de caractères ;
- capable d'écrire sur le flux standard de sortie ;
- exécutable ou interprétable par le serveur web.
Les langages de programmation les plus utilisés pour l'écriture des CGI sont les suivants :
- Le langage Perl, particulièrement adapté à la manipulation de chaînes de caractères ;
- Les langages C et C++ ;
- Le langage Java.
Lorsqu'une requête est envoyée au serveur, celui-ci examine l'extension du fichier demandé afin de déterminer l'action qu'il va effectuer. Ainsi, par exemple :
- dans le cas d'un fichier HTML (extension .htm ou .html) : le serveur va générer des en-têtes de réponse HTTP qu'il va envoyer au navigateur demandant un fichier, puis envoyer le fichier HTML.
- dans le cas d'un fichier CGI écrit en Perl (extension .pl) : le serveur va exécuter l'interpréteur Perl, celui-ci va interpréter le code contenu dans le fichier portant l'extension .pl, puis envoyer les données au serveur, qui va les envoyer au navigateur, comme dans le cas d'un fichier HTML
- dans le cas d'un fichier CGI écrit en langage C (extension .exe sous Windows) : le serveur va exécuter le CGI, puis envoyer vers le navigateur les données que le programme lui aura transmis.
Ainsi, le rôle d'un script CGI est de recevoir des données envoyées par le serveur, de les traiter, puis de renvoyer des en-têtes de réponses et des tags HTML valides. En effet, lorsqu'un programme CGI renvoie un fichier, il doit commencer par envoyer un en-tête HTTP permettant de préciser le type de contenu envoyé au navigateur (appelé type MIME), c'est-à-dire :
- dans le cas d'un fichier html, la chaîne suivante :
content-type : text/html
- dans le cas d'un fichier gif (pour faire de la création dynamique d'images par exemple, comme dans le cas d'histogrammes ou de diagrammes divers), la chaîne suivante :
content-type : image/gif
- dans le cas d'un fichier quicktime, la chaîne suivante :
content-type : text/quicktime
- etc.