CGI - Les variables d'environnement
Notion de variable d'environnement
Les variables d'environnement sont des données stockées dans des variables du système et permettent aux programmes d'avoir des informations sur son environnement. Dans le cas du programme CGI, l'environnement est notamment composé des éléments suivants :
- Informations sur le serveur
- Informations sur le client
Des variables sont créées par le serveur à chaque fois que le programme CGI est appelé. Le serveur les lui fournit en paramètres cachés lors de l'exécution de l'interpréteur.
Les variables d'environnement permettent notamment d'avoir des informations sur le type de serveur, son administrateur, la date à laquelle le CGI a été appelé, l'adresse IP et le type de navigateur du client.
Les variables d'environnement
Les variables d'environnement peuvent être classées en deux catégories :
- Les variables d'environnement relatives au client
- Les variables d'environnement relatives au serveur
Les variables d'environnement relatives au client
Variable d'environnement | Description |
---|---|
AUTH_TYPE | Il s'agit de la méthode d'authentification qui a été utilisée par le client pour accéder au programme CGI |
CONTENT_LENGTH | Longueur du corps de la requête. Il s'agit de la taille des données envoyées au CGI par l'intermédiaire de la méthode POST d'un formulaire |
CONTENT_TYPE | Type de données contenu dans le corps de la requête. Il s'agit du type MIME des données |
HTTP_COOKIE | Cookie du client si jamais un cookie est effectivement présent sur le disque du client |
HTTP_REFERER | URL de la page qui a appelé le script CGI |
HTTP_REQUEST_METHOD | Cette variable indique le type de méthode utilisée pour envoyer les données au programme CGI. Il s'agit de GET, HEAD, POST, PUT ou DELETE. Dans le cas de la méthode GET, les données sont encodées avec l'URL de requête, dans le cas de la méthode POST, par contre, les données présentes dans le corps de la requête sont accessibles via le fichier de flux d'entrée standard nommé STDIN |
HTTP_USER_AGENT | Cette variable permet d'avoir des informations sur le type de navigateur utilisé par le client, ainsi que son système d'exploitation |
PATH | Il s'agit du chemin d'accès au script CGI |
PATH_INFO | Il s'agit de la partie de l'URL (ayant servi à accéder au script CGI) située avant le point d'interrogation. Il s'agit donc du chemin d'accès au script CGI sans prendre en compte les données supplémentaires |
PATH_TRANSLATED | Il s'agit du chemin d'accès absolu au script CGI, c'est-à-dire l'emplacement absolu du script sur le serveur |
QUERY_STRING | Il s'agit de la partie de l'URL (ayant servi à accéder au script CGI) située après le point d'interrogation. C'est de cette manière que sont transmises les données d'un formulaire dans le cas de la méthode GET |
REMOTE_ADDR | Cette variable contient l'adresse IP du client appelant le script CGI |
REMOTE_USER | Cette variable n'existe que si le client a été soumis à une authentification, et contient alors le couple nom_d_utilisateur/mot_de_passe |
SCRIPT_FILENAME | Chemin d'accès complet au script CGI |
SCRIPT_NAME | Chemin d'accès relatif (par rapport au chemin d'accès à la racine web) au script CGI |
SERVER_PORT | Port TCP auquel les données ont été envoyées (généralement le port 80) |
SERVER_PROTOCOL | Nom et version du protocole utilisé pour envoyer la requête au script CGI |
Les variables d'environnement dépendant du serveur
Variable d'environnement | Description |
---|---|
DATE_GMT | Date actuelle au format GMT |
DATE_LOCAL | Date actuelle au format local |
DOCUMENT_ROOT | Racine des documents Web sur le serveur |
GATEWAY_INTERFACE | Version des spécifications CGI utilisées par le serveur |
HTTP_HOST | Nom de domaine du serveur |
SERVER_ADMIN | Adresse électronique de l'administrateur du serveur |
SERVER_SOFTWARE | Type (logiciel) du serveur web |
Affichage des variables d'environnement
Il est possible de créer un script permettant de visualiser l'ensemble des variables d'environnement. Voici un exemple de script écrit en Perl :
#!/usr/local/bin/perl print "content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD><TITLE>Variables d'environnement</TITLE></HEAD>\n"; print "<BODY>\n"; foreach $key (sort(keys %ENV)) { print "$key = $ENV{$key}<BR>\n"; } print "</BODY>";