- Fiches techniques
- Les brèves
- Les études
Fiche technique
|
|
| CGI | |
|
||||||
| Présentation | ||||||
| L’utilisation la plus courante est la saisie d’un formulaire par un utilisateur qui le valide en cliquant sur un bouton. Cela a pour effet d’envoyer les données du formulaire en paramètres du CGI. Les CGI peuvent être écrits dans différents langages de programmation. Le langage doit être capable de lire et écrire des flux de données en entrée et en sortie, de traiter les chaînes de caractères et d’être exécutable ou interprété par le serveur. Ainsi les langages les plus utilisés sont le Perl, le C, le C++, le Java et le PHP. Le rôle d’un programme CGI est de recevoir les données envoyées par le serveur, de les traiter pour finalement envoyer les en-têtes de réponse et les tags HTML au client. Lors de l’envoi d’une requête au serveur, en fonction du type du fichier on peut différencier plusieurs cas : Si le CGI renvoie un fichier, il doit y avoir un en-tête HTTP qui précise le type MIME au navigateur. Par exemple, vous aurez : content-type : application/zip Envoi de données Etant donné que le serveur renvoie telles quelles les informations fournies par le CGI au navigateur, il est nécessaire d’ajouter les en-têtes HTTP permettant au navigateur de voir qu’il s’agit d’une page web. Il est également possible d’effectuer une redirection en utilisant un en-tête de redirection (Meta tags). Une utilisation possible est d’envoyer directement un utilisateur vers une page en fonction des informations saisies dans un formulaire par l’utilisateur. Réception de données L’envoi de données à un CGI se fait par l’intermédiaire d’un formulaire soit par une méthode GET ou POST. Chaque élément doit avoir une valeur unique pour former un couple nom/valeur. L’ensemble de couples nom/valeur sont séparés par des « & ». La méthode GET envoie des données à travers l’URL en ajoutant un « ? » entre le nom du CGI et l’ensemble des couples nom/valeur. Vous obtenez donc une URL du type : http://serveur/cgi-bin/script.cgi?nom1=valeur1&nom2=valeur2 Cependant l’emploi de cette méthode est limité à une chaîne de 255 caractères et les données sont en clair dans l’URL (problématique lors de la transmission d’un mot de passe). La méthode POST envoie les données à la suite des en-têtes HTTP. La méthode POST code les informations de la même manière que GET. La taille des données envoyées n’est pas limitée car elles passent par l’entrée standard du CGI et non par des variables d’environnement. Les variables d’environnement Il existe deux types de variables d’environnement : serveur et client. Elles permettent d’obtenir des informations par exemple sur le type de serveur, l’IP, la date de l’appel du CGI … Ces variables sont créées par le serveur à chaque appel du CGI. Elles sont transmises en paramètre caché lors de l’exécution de l’interpréteur. |
||||||
|
||||||
| Evaluation | ||||||
Restons simples et compréhensibles : il s'agit d'élaborer un programme (ou d'utiliser un programme existant) qui fonctionne en ligne. Sans autre précision, cette définition pourrait correspondre à celle du JavaScript (qui permet, rappellez vous, de faire fonctionner un programme sur la machine de l'utilisateur). L'intérêt, avec l'utilisation du CGI, est la possibilité de faire fonctionner le programme non sur la machine de l'utilisateur, mais sur celle du serveur de l'hébergeur. Vous pouvez réaliser ou utiliser de nombreuses ressources du CGI. Aucune limite n'est posée, mais il va falloir soit utiliser des scripts CGI existants, soit en créer vous-même (ce qui imposerait alors de se plonger dans la programmation). Vous pourrez par exemple tenir une base de données en ligne, que chaque utilisateur pourrait modifier (éventuellement avec un code d'accès). Vous pourrez aussi réaliser ou utiliser un script qui vous permettrait de recevoir le résultat d'un formulaire sous forme de mail (l'intérêt par rapport à l'utilisation du HTML réside dans le fait que les navigateurs Microsoft supportent très mal les formulaires HTML mais qu'aucun problème ne se pose avec les CGI). |
||||||
| Lien | ||||||
