CGI
Le CGI est standard pour divers programmes que vous pouvez utiliser pour interagir avec les utilisateurs surfant sur votre site. Comme CGI est un standard, il n'est pas dépendant du navigateur Web ou du serveur et peut être déplacé d'un serveur Web à un autre tout en conservant toutes ses fonctionnalités.
L'une des meilleures choses à propos du World Wide Web est que vous pouvez l'utiliser pour échanger des informations avec potentiellement des millions d'utilisateurs. Cependant, les pages HTML statiques ne vous permettent pas d'afficher correctement du contenu dynamique aux personnes surfant sur votre site Web contenant des informations spécifiques.
D'autre part, le CGI (Common Gateway Interface) est un mécanisme vous permettant d'interagir avec les navigateurs Web de votre site Web et d'exploiter le World Wide Web à son plein potentiel. Après avoir configuré votre site Web et créé des pages Web, vous êtes prêt à configurer des scripts CGI sur votre serveur Web. Les formulaires de rétroaction, les formulaires de courrier électronique, les interfaces de requête de base de données, les mécanismes de mise à jour de la base de données, les compteurs de pages Web et les moteurs de recherche sont toutes des applications de CGI.
Tout comme les programmes d'application, les programmes CGI peuvent être écrits dans presque n'importe quel langage de programmation vous permettant soit de créer un programme exécutable, soit de l'interpréter en temps réel avec un autre programme (comme dans le cas d'AWK et de Perl). Voici quelques langages de programmation que vous pouvez utiliser pour créer des applications CGI sous Windows :
En fonction de votre expertise, de ce qui est disponible et de la nature de vos projets CGI, vous pouvez choisir le langage répondant le mieux à vos besoins. Habituellement, les scripts CGI sont entreposés dans le répertoire CGI-BIN du répertoire racine des documents du serveur Web. Tous les fichiers et chemins d'accès d'un site Web sont relatifs à ce répertoire.
Avantages d'un site Web interactif
Les fichiers HTML en texte brut récupérés par les clients Web sont statiques. Les informations contenues dans ces fichiers ne changent jamais, sauf si vous les modifiez manuellement. Cependant, en utilisant des scripts CGI, vos pages Web peuvent être créées dynamiquement chaque fois qu'un client y accède. Pour le client, la page semble avoir été créée spécialement pour lui en fonction des informations nécessaires. Ainsi, cet outil est un moyen très puissant d'interagir avec les internautes. Vous devez utiliser le CGI (ou FastCGI, ISAPI ou Win-CGI) pour rendre votre site interactif afin de pouvoir fournir un contenu personnalisé et permettre à ceux naviguant sur votre site Web d'interagir avec les informations que vous fournissez.
Variables d'environnement CGI
Chaque fois que le serveur Web exécute un script CGI, il crée un certain nombre de variables d'environnement pour transmettre des informations au script CGI. Ces variables indiquent au script CGI comment il est appelé et fournissent des informations sur le serveur et le navigateur Web du client. Selon la façon dont le script CGI est appelé, certaines variables d'environnement peuvent ne pas être disponibles. Les variables d'environnement fournies aux scripts CGI sont toujours toutes en majuscules. Ils sont accessibles par un programme C, un script Perl ou tout autre langage de programmation, assurez-vous d'utiliser toutes les lettres majuscules.
Nom | Description |
---|---|
AUTH_TYPE | Cette variable permet d'indiquer le type d'authentification. Certains serveurs Web peuvent être configurés pour authentifier les utilisateurs. Si le serveur a authentifié un utilisateur, le type d'authentification utilisé, le type d'authentification utilisé pour valider l'utilisateur est entreposé dans la variable AUTH_TYPE. Le type d'authentification est déterminée en examinant l'entête d'autorisation que le serveur Web peut recevoir avec une requête HTTP. |
CONTENT_LENGTH | Cette variable permet d'indiquer la longueur du contenu. Parfois, les scripts CGI sont appelés avec des informations supplémentaires. Ces informations sont généralement entrées pour le programme CGI. La longueur des informations supplémentaires est spécifiée par le nombre d'octets occupés par les informations supplémentaires de cette variable. Si un script CGI est appelé avec la méthode PUT ou POST, CONTENT_LENGTH est utilisé pour déterminer la longueur de l'entrée. |
CONTENT_TYPE | Cette variable permet d'indiquer les types de contenu MIME utilisés pour étiqueter divers types d'objets (fichiers HTML, fichiers Word, fichiers GIF,...). Le type de contenu MIME pour les données soumises à un script CGI est entreposé dans CONTENT_TYPE. Par exemple, si les données sont soumises à un script CGI à l'aide de la méthode GET, cette variable contiendra la valeur application /x-www-form-urlencode. Les réponses au formulaire sont codées selon les spécifications d'URL. |
GATEWAY_INTERFACE | Cette variable permet d'indiquer le numéro de révision de la spécification CGI. Le format de cette variable est CGI /revision. En examinant cette variable, un script CGI peut déterminer la version de CGI utilisée par le serveur Web. |
HTTP_ACCEPT | Cette variable permet d'indiquer le Différents clients Web peuvent gérer différents types MIME. Les types MIME acceptés par le client Web appelant le script CGI apparaissent sous la forme d'une liste séparée par des virgules. La liste prend le format type/subtype, type/subtype. Par exemple, si le client Web prend en charge les deux formats d'image GIF et JPEG, la liste HTTP_ACCEPT contiendra les deux éléments image/gif, image/jpeg. |
HTTP_USER_AGENT | Cette variable permet d'indiquer la valeur déterminant le navigateur Web utilisé par le client. Par exemple, si le client utilise Netscape 2.0 beta 2, la variable HTTP_USER_AGENT contiendra la valeur Mozilla/2.0b4 (WinNT: I). Le format général de cette variable est software/versionlibrary/version. |
PATH_INFO | Cette variable permet de transmettre diverses options à un programme CGI. Les options suivent l'URL du script. Les clients peuvent accéder aux scripts CGI avec des informations supplémentaires après l'URL du script CGI. Le PATH_INFO contient toujours la chaîne de caractères ayant été utilisée pour appeler le script CGI après le nom du script CGI. |
PATH_TRANSLATED | Cette variable permet d'indiquer le nom du chemin absolue. Dans le cas où le script CGI a besoin de connaître le nom de chemin absolu de lui-même, le script CGI peut obtenir ces informations à partir de PATH_TRANSLATED. Par exemple, si le script CGI est appelé dans BonjourGladir.EXE, tous les scripts CGI sont entreposés dans H:\www\http\ns-home\root\cgi-bin, et le script CGI est accessible avec l'URL http://votreserveur.votredomaine/root/cgi/BonjourGladir.EXE. Le PATH_TRANSLATED contiendra la valeur H:\wwww\http\ns-home\root\cgi-bin\BonjourGladir.EXE. Si le programme CGI a besoin de sauvegarder ou d'accéder à des fichiers temporaires dans son répertoire personnel, il peut utiliser PATH_TRANSLATED pour déterminer son emplacement absolu en examinant cette variable CGI. |
QUERY_STRING | Cette variable permet d'indiquer la chaîne de caractères de la requête. Vous avez peut-être remarqué que lorsque vous soumettez certains formulaires, une chaîne de caractères apparaît après un point d'interrogation, suivie du nom d'URL du script appelé. Cette chaîne de caractères est appelée chaîne de caractères de requête et contient tout ce qui se trouve après ce point d'interrogation. Lorsqu'un script CGI est appelé avec la méthode GET, le QUERY_STRING contient généralement des variables et leurs valeurs telles que saisies par la personne ayant rempli le formulaire. Divers moteurs de recherche utilisent parfois QUERY_STRING pour examiner l'entrée lorsqu'un formulaire est soumis pour une recherche par mot-clef. |
REMOTE_ADDR | Cette variable permet d'indiquer l'adresse IP du client ayant appelé le programme CGI. Pour des raisons de sécurité, vous ne devez jamais utiliser la valeur de cette variable pour authentifier les utilisateurs. Quelqu'un peut facilement tromper votre serveur Web en lui faisant croire qu'un client se connecte à partir d'une adresse IP différente. |
REMOTE_HOST | Cette variable permet d'indiquer l'hôte client. Si le serveur Web peut effectuer une recherche DNS de l'adresse IP du client et trouve l'alias de l'adresse IP, la variable REMOTE_HOST contiendra le nom d'alias de l'adresse IP du client. Certains serveurs Web vous permettent d'activer ou de désactiver les recherches DNS. Si vous comptez utiliser cette variable pour trouver l'alias d'adresse IP des clients, assurez-vous d'activer l'option de recherche DNS. Le serveur Web peut trouver l'alias d'adresse IP de la plupart des clients, mais il peut ne pas être capable d'obtenir l'alias de certains clients. Dans ce cas, la variable REMOTE_HOST ne recevra pas la valeur d'alias DNS du client; il contiendra uniquement l'adresse IP du client. N'utilisez jamais cette valeur à des fins d'authentification de l'utilisateur. |
REMOTE_IDENT | Cette variable permet d'indiquer le nom d'utilisateur du serveur. Si le serveur Web utilisé prend en charge l'identification RFC 931, cette variable contiendra le nom d'utilisateur récupéré sur le serveur. Malheureusement, cette valeur n'est pas fiable lors de la transmission de données sensibles. En règle générale, un serveur Web obtient cette valeur en contactant le client ayant initié la requête HTTP et en parlant avec le serveur d'authentification du client. |
REMOTE_USER | Cette variable permet d'indiquer l'utilisateur à distance. Certains serveurs Web prennent en charge l'authentification des utilisateurs. Si un utilisateur s'est authentifié, le script CGI peut trouver le nom d'utilisateur de la personne parcourant le site Web en examinant la valeur de la variable d'environnement REMOTE_USER. La variable REMOTE_USER de CGI est disponible uniquement si l'utilisateur a été authentifié à l'aide d'un mécanisme d'authentification. |
REQUEST_METHOD | Cette variable permet d'indiquer la requête de méthode. Un client peut appeler un script CGI de plusieurs manières. La méthode utilisée par le client pour appeler le script CGI se trouve dans la variable REQUEST_METHOD. Cette variable peut avoir une valeur telle que HEAD, POST, GET ou PUT. Les scripts CGI utilisent la valeur de cette valeur pour localiser les données transmises aux scripts CGI. |
SCRIPT_NAME | Cette variable permet d'indiquer tous les fichiers sur un serveur Web sont généralement référencés par rapport à son répertoire racine de document. Le SCRIPT_NAME contient le nom du chemin virtuel du script appelé par rapport au répertoire racine du document. |
SERVER_NAME | Cette variable permet d'indiquer le nom de domaine du serveur Web ayant appelé le script CGI. Ce nom de domaine peut être une adresse IP ou un alias DNS. |
SERVER_PORT | Cette variable permet d'indiquer le port du serveur. En règle générale, les serveurs Web écoutent les requêtes HTTP sur le port 80. Cependant, un serveur Web peut écouter tout port n'étant pas utilisé par une autre application. Un programme CGI peut déterminer ce numéro de port en examinant la valeur de la variable d'environnement SERVER_PORT. Lors de l'affichage de liens hypertextes auto-référencés lors de l'exécution en examinant le contenu de SERVER_NAME, assurez-vous d'ajouter le numéro de port du serveur Web (généralement le port 80) en le concaténant avec la valeur de SERVER_PORT. |
SERVER_PROTOCOL | Cette variable permet d'indiquer le protocole du serveur. Le serveur Web parle HTTP (Hypertext Transfer Protocol). Vous pouvez déterminer quelle version de HTTP le serveur Web utilise en examinant la variable d'environnement SERVER_PROTOCOL. La variable SERVER_PROTOCOL contient le nom et les données de révision du protocole utilisé. Ces informations sont au format protocol/revision. Par exemple, si le serveur parle HTTP 1.0, cette variable aura la valeur HTTP/1.0. |
SERVER_SOFTWARE | Cette variable permet d'indiquer le nom du serveur Web ayant appelé le script CGI. Cette variable d'environnement est au format name/version. Si un script CGI est conçu pour utiliser des capacités spéciales variables d'un serveur Web, le script CGI peut déterminer le serveur Web utilisé en examinant cette variable avant que ces capacités spéciales ne soient utilisées. |