SELFHTML

Variables d'environnement CGI

Page d'information: vue d'ensemble

vers le bas Généralités sur les variables d'environnement CGI
vers le bas Récapitulatif des variables d'environnement CGI

 vers le bas 

Généralités sur les variables d'environnement CGI

Les variables d'environnement CGI font également partie de ce qu'est l' "interface CGI". Un Autre page d'information serveur Web installé met de telles variables à disposition au niveau du système d'exploitation. À chaque appel d'un script CGI il sauvegarde des informations dans quelques unes de ces variables. Le script CGI peut alors lire le contenu de ces variables et l'utiliser pour ses propres objectifs. Le script CGI peut aussi lui-même affecter un contenu à quelques unes de ces variables ou modifier un contenu qui y est sauvegardé. Les variables d'environnement CGI existent indépendamment des variables que vous pouvez définir vous même dans un script CGI.

Pendant l'exécution d'un script CGI sont sauvegardées dans les variables d'environnement CGI des informations telles que par exemple le nom de l'ordinateur serveur ou des informations sur le navigateur utilisé par l'utilisateur qui a provoqué l'appel du programme CGI. Si pour l'appel d'un script CGI à partir d'un Chapitre: vue d'ensemble formulaire la méthode GET a été employée, les données entrées dans le formulaire par l'utilisateur figurent dans une variable d'environnement CGI (voir aussi la partie Autre page d'information transmettre des données de formulaire avec GET ou POST).

Afin d'utiliser des variables d'environnement CGI à partir d'un programme CGI, vous devez vous servir des techniques de lecture des variables d'environnement dans le langage de programmation employé. Ainsi vous pouvez accéder avec Perl obtenir le nom du serveur avec une instruction telle que print $ENV{'SERVER_NAME'};. Perl propose à vrai dire toutes les variables d'environnement dans un Autre page d'information Hash prédéfini nommé %ENV;.

Pour trouver quelles variables d'environnement sont disponibles sur votre serveur Web, vous pouvez utiliser le petit script Perl suivant. Vous pouvez sauvegarder le code source du script Perl suivant avec un éditeur de texte dans le répertoire CGI défini sous le nom env.pl. Supposons que votre répertoire CGI s'appelle comme il est d'usage cgi-bin, et que le serveur Web est démarré, alors, vous pouvez appeler le script dans le navigateur avec l'adresse http://127.0.0.1/cgi-bin/env.pl ou également avec l'adresse http://localhost/cgi-bin/env.pl.

Exemple: Fichier env.pl

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Variables d'environnement</title></head><body>\n";
print "<h1>Variables d'environnement:</h1>\n";
print "<table border=\"1\">\n";
print "<tr><th align=\"left\" bgcolor=\"#E0E0E0\">Nom de variable</th>",
      "<th align=\"left\" bgcolor=\"#E0E0E0\">Valeur</th></tr>\n";
foreach(keys(%ENV)) {
  print "<tr><td><b>$_</b></td><td><tt>$ENV{$_}</tt></td></tr>\n";
}
print "<tr><th align=\"left\" bgcolor=\"#E0E0E0\" colspan=\"2\">au total: ",
      scalar keys(%ENV)," variables d'environnement</th></tr>\n";
print "</table>\n";
print "</body></html>\n";

Explication:

Le script créée un tableau HTML avec toutes les variables d'environnement disponibles sur le serveur. Les instructions Perl ne seront pas expliquées plus en détail ici. Seule la première ligne du script devra être adaptée le cas échéant. Là où est noté dans l'exemple #!/usr/bin/perl vous devez, au cas où vous recevez un message d'erreur tel que Internal Server Error à l'appel, mentionner le chemin complet du fichier exécutable de l'interpréteur Perl. Si vous avez installé l'interpréteur Perl sous MS Windows par exemple dans c:\programme\perl, essayez donc la ligne suivante comme première ligne: #!c:/programme/perl/bin/perl.exe

 vers le hautvers le bas 

Récapitulatif des variables d'environnement CGI

La liste suivante respecte l'ordre alphabétique des noms de variables.

Nom de variable Explication
CONTENT_LENGTH contient le nombre de signes transmis à l'appel du script CGI par la méthode POST. Si par exemple le script CGI a été appelé lors de l'envoi d'un formulaire HTML et que POST y est mentionné comme méthode de transmission, se trouve dans cette variable d'environnement combien de signes le script doit lire de l' entrée standard pour lire complètement les données du formulaire transmises.
CONTENT_TYPE contient le Autre page d'information type Mime des données transmises à l'appel du script CGI par la méthode POST. Si par exemple le script CGI a été appelé lors de l'envoi d'un formulaire HTML et que POST y est mentionné comme méthode de transmission, se trouve dans cette variable d'environnement le type Mime typique pour des formulaires HTML application/x-www-form-urlencoded (Sur ce type Mime voir aussi Autre page d'information Flux de données lors de la transmission de données de formulaire).
DOCUMENT_ROOT Contient le chemin physique du répertoire racine pour le rangement des fichiers qui peuvent être appelés sur le serveur Web. Un script CGI peut calculer à partir de cette mention des noms de chemin absolus pour l'ouverture de fichiers.
GATEWAY_INTERFACE contient la version de l'interface CGI, soutenue par le serveur installé - par exemple CGI/1.1, si la version actuellement habituelle de définition de l'interface CGI est soutenue.
HTTP_ACCEPT contient la liste des types Mime acceptés par le navigateur WWW appelant. La mention */* signifie que le navigateur Web accepte tout.
HTTP_ACCEPT_CHARSET contient la liste des jeux de caractères acceptés par le navigateur Web appelant, par exemple iso-8859-1,*,utf-8.
HTTP_ACCEPT_ENCODING contient une liste des méthodes de codage acceptées par le navigateur Web appelant. Certains navigateurs acceptent aussi par exemple le type de codage gzip, ce qui signifie que le navigateur peut également recevoir des fichiers qui lui sont transmis comprimés d'après l'algorithme GNU-Zip.
HTTP_ACCEPT_LANGUAGE contient la langue utilisée par le navigateur appelant pour son interface utilisateur. Des valeurs fréquentes sont par exemple fr (pour des navigateurs en langue française) ou bien de (pour des navigateurs en langue allemande). Un script CGI peut décider par exemple, au vu de cette mention, s'il envoie une réponse en français ou en allemand au navigateur.
HTTP_CONNECTION Contient des informations sur l'état de la connexion HTTP entre le serveur et le navigateur appelant. La valeur Keep-Alive signifie que le navigateur attend une réponse.
HTTP_COOKIE Contient le nom et la valeur de témoins de connexion (cookies) dans la mesure où ils sont envoyés par l'ordinateur appelant. Avec l'instruction Perl:
my @cookies = split(/[;,]\s*/,$ENV{'HTTP_COOKIE'});
vous pouvez rechercher tous les cookies posés. Chaque élément du Autre page d'information tableau nommé @cookies contient alors chacun un cookie, composé d'un nom et d'une valeur, qui sont séparés par le signe égal =. La valeur du témoin de connexion est sauvegardée dans le format du Autre page d'information type Mime application/x-www-form-urlencoded (sur ce type Mime, se reporter à Autre page d'information  Flux de données lors de la transmission de données de formulaire).
HTTP_HOST Contient le nom de domaine ou l'adresse IP de la ligne d'adresse du navigateur appelant. Pour un script CGI, cette mention peut être importante au cas où il doit servir plusieurs serveurs.
HTTP_REFERER contient l'adresse URI de la page Web à partir de laquelle le script CGI a été appelé. La valeur n'est cependant pas transmise correctement par tous les navigateurs Web et n'est donc pas disponible dans tous les cas .
Remarque: Si votre anglais est courant, vous remarquerez que HTTP_REFERER devrait s'appeler normalement HTTP_REFERRER. Cette erreur a échappé aux auteurs de la première spécification HTTP qui perdure aujourd'hui pour des raisons historiques et de compatibilité vers l'amont.
HTTP_USER_AGENT contient les informations de produit et de version du navigateur WWW appelant. Un script CGI peut rechercher de cette façon quel est le navigateur dont se sert l'utilisateur.
PATH_INFO Si une chaîne de caractères avec des données est transmise au script CGI, alors PATH_INFO contient la partie de la chaîne de caractères après le nom du script jusqu'au premier ?. Si par exemple le script a pour adresse http://ma.page.net/cgi-bin/test.pl, mais est appelé avec http://ma.page.net/cgi-bin/test.pl/querys/mamusique.sql?cat=Mozart , alors cette variable d'environnement contient la partie /querys/musicbase.sql. Elle est conçue pour permettre la transmission comme paramètres pour des scripts des noms de fichier avec la mention de leur chemin.
PATH_TRANSLATED Contient comme PATH_INFO la partie de l'URI après le nom du script jusqu'au premier ?, avec cette différence cependant, que ce n'est pas la partie proprement dite de L'URI qui est renvoyée mais le chemin aux données de cette partie traduit par le serveur . Supposons que le script a pour adresse http://ma.page.net/cgi-bin/test.pl, mais qu'il a été appelé avec http://ma.page.net/cgi-bin/test.pl/querys/mamusique.sql. Ensuite cette partie d'adresse supplémentaire /querys/musicbase.sql pourrait, du point de vue du serveur être résolue en un nom de chemin physique comme /usr/web/page/querys/musicbase.sql. C'est ce nom de chemin que renverrait PATH_TRANSLATED.
QUERY_STRING contient une chaîne de caractères avec des données qui ont été transmises au script dans l'URI après le premier ?. Supposons que le script a l'adresse http://ma.page.net/cgi-bin/test.pl, mais a été appelé avec l'adresse http://ma.page.net/cgi-bin/test.pl?User=Serge. Alors QUERY_STRING contiendrait la valeur User=Serge. Si un utilisateur a rempli un formulaire HTML et qu'il appelle le script CGI avec la méthode GET, alors cette variable d'environnement contiendrait les données saisies du formulaire. Les données sont codées d'après les règles du type Mime application/x-www-form-urlencoded.
REMOTE_ADDR contient l'adresse IP de l'ordinateur serveur par lequel le script CGI a été appelé. Il ne doit pas s'agir absolument ici de l'adresse IP de l'ordinateur client qui appelle - la valeur peut également provenir d'un serveur Proxy.
REMOTE_HOST contient l'adresse domaine de l'ordinateur serveur par lequel le script CGI a été appelé. Cette valeur n'est cependant fixée que si le Serveur Web est configuré en fonction et qu'il est en mesure d'attribuer le nom d'hôte correspondant à l'adresse IP. Il ne doit pas s'agir absolument ici de l'adresse IP de l'ordinateur client qui appelle - la valeur peut également provenir d'un serveur Proxy.
REMOTE_IDENT contient des informations de protocole si, sur le serveur, tourne le protocole ident pour les accès protégés.
REMOTE_PORT recherche par quel port de l'ordinateur client le script CGI a été appelé. Ce nombre est habituellement dans une plage supérieure à 1024 et est choisi de façon aléatoire par le navigateur Web appelant.
REMOTE_USER contient le nom avec lequel l'utilisateur qui a appelé le script CGI, s'est annoncé. Si le script par exemple est protégé htaccess, L'utilisateur qui appelle doit s'annoncer avec un nom d'utilisateur et un mot de passe. Le nom d'utilisateur entré à ce moment peut être recherché avec cette variable.
REQUEST_METHOD contient la commande HTTP avec laquelle le programme CGI a été appelé: soit GET soit POST. Un script CGI peut par exemple lire cette variable et décider ensuite comment il peut lire les données du formulaire: soit de l'entrée standard (pour la méthode POST) ou bien de la variable d'environnement QUERY_STRING (pour la méthode GET).
REQUEST_URI Contient le chemin HTTP du script les données transmises dans l'appel. Supposons que le script a l'adresse http://ma.page.net/cgi-bin/test.pl et qu'il a été appelé avec http://ma.page.net/cgi-bin/test.pl?User=Serge. Alors la variable REQUEST_URI livre la valeur /cgi-bin/test.pl?User=Serge.
SCRIPT_NAME contient le chemin HTTP du script CGI appelé. Supposons que le script a l'adresse http://ma.page.net/cgi-bin/test.pl. Alors la variable SCRIPT_NAME livre la valeur /cgi-bin/test.pl.
SCRIPT_FILE_NAME Contient le chemin physique du script sur l'ordinateur serveur, donc par exemple /usr/web/data/cgi-bin/test.pl.
SERVER_ADDR Contient l'adresse IP de l'ordinateur serveur.
SERVER_ADMIN Contient le nom/ l'adresse électronique de l'administrateur serveur enregistré dans la configuration du serveur Web.
SERVER_NAME Contient le nom de l'ordinateur serveur sur lequel tourne le script CGI. Normalement c'est le nom d'hôte enregistré de l'ordinateur.
SERVER_PORT contient le numéro de port qui a été installé pour le serveur Web. Pour les serveurs Web, celui-ci est normalement 80.
SERVER_PROTOCOL Contient la version du protocole HTTP que soutient le serveur Web installé, par exemple HTTP/1.1, su la version 1.1 habituelle aujourd'hui est soutenue.
SERVER_SIGNATURE Contient un renseignement avancé sur le serveur par exemple Apache/1.3.14 Server at localhost Port 80.
SERVER_SOFTWARE Contient le nom et le numéro de version du logiciel sur l'ordinateur serveur Web.

 
 vers le haut
page suivante Autre page d'information Server Side Includes en HTML
page précédente Autre page d'information Installer des scripts CGI sur un serveur Web public
 

© 2001 Stefan Münz / © 2003 Traduction Adresse électronique Serge François, 13405@free.fr
Adresse électronique selfhtml@fr.selfhtml.org