# Variables d'environnement CGI

Les variables d'environnement CGI sont des variables transmises à un programme CGI, par le serveur Web l'invoquant, lors de son exécution.
Elles fournissent des informations sur la requête effectuée par le client, sur le serveur et également sur le client lui-même. Par exemple, lorsqu'on effectue une recherche sur un site qui fonctionne avec des CGI, le script récupérera les termes de la recherche avec la variable d'environnement « QUERY_STRING ».

## Liste des variables CGI
### Variables en rapport avec le serveur

* SERVER_SOFTWARE
       Le nom et la version du serveur HTTP répondant à la requête. (Format : nom/version)
* SERVER_NAME
       Le nom d'hôte, alias DNS ou adresse IP du serveur.
* GATEWAY_INTERFACE
       La révision de la spécification CGI que le serveur utilise. (Format : CGI/révision)

### Variables spécifiques à la requête

* SERVER_PROTOCOL
       Le nom et la révision du protocole dans lequel la requête a été faite (Format : protocole/révision)
* SERVER_PORT
       Le numéro de port sur lequel la requête a été envoyée.
* REQUEST_METHOD
       La méthode utilisée pour faire la requête. Pour HTTP, elle contient généralement « GET » ou « POST ».
* PATH_INFO
       Le chemin supplémentaire du script tel que donné par le client. Par exemple, si le serveur héberge le script « /cgi-bin/monscript.cgi » et que le client demande l'url « http://serveur.org/cgi-bin/monscript.cgi/marecherche », alors PATH_INFO contiendra « marecherche ».
* PATH_TRANSLATED
       Contient le chemin demandé par le client après que les conversions virtuel → physique ont été faites par le serveur.
* SCRIPT_NAME
       Le chemin virtuel vers le script étant exécuté. Exemple : « /cgi-bin/script.cgi »
* QUERY_STRING
       Contient tout ce qui suit le « ? » dans l'URL envoyée par le client. Toutes les variables provenant d'un formulaire envoyé avec la méthode « GET » seront contenues dans le QUERY_STRING sous la forme « var1=val1&var2=val2&... ».
* REMOTE_HOST
       Le nom d'hôte du client. Si le serveur ne possède pas cette information (par exemple, lorsque la résolution DNS inverse est désactivée), REMOTE_HOST sera vide.
* REMOTE_ADDR
       L'adresse IP du client.
* AUTH_TYPE
       Le type d'identification utilisé pour protéger le script (s’il est protégé et si le serveur supporte l'identification).
* REMOTE_USER
       Le nom d'utilisateur du client, si le script est protégé et si le serveur supporte l'identification.
* REMOTE_IDENT
       Nom d'utilisateur (distant) du client faisant la requête. Le serveur doit supporter l'identification RFC 931. Cette variable devrait être utilisée à des fins de journaux seulement.
* CONTENT_TYPE
       Le type de contenu attaché à la requête, si des données sont attachées (comme lorsqu'un formulaire est envoyé avec la méthode « POST »).
* CONTENT_LENGTH
       La longueur du contenu envoyé par le client.

### Variables provenant du client

Toutes les variables qui sont envoyées par le client sont aussi passées au script CGI, après que le serveur a rajouté le préfixe « HTTP_ ». Voici quelques exemples de variables possibles :
* HTTP_ACCEPT
       Les types de données MIME que le client accepte de recevoir.
       Exemple : text/*, image/jpeg, image/png, image/*, */*
* HTTP_ACCEPT_LANGUAGE
       Les langues dans lequel le client accepte de recevoir la réponse.
       Exemple : fr_CA, fr
* HTTP_USER_AGENT
       Le navigateur utilisé par le client.
       Exemple : Mozilla/5.0 (compatible; Konqueror/3; Linux)
* HTTP_COOKIE
       Les éventuels cookies. Une liste de paires clef=valeur contenant les cookies positionnés par le site, séparés par des points-virgules.
* HTTP_REFERER
       Une adresse absolue ou partielle de la page web à partir de laquelle la requête vers la page courante a été émise.