Tous les CGI (Common Gateway Interface)

Qu'est-ce que CGI?

Depuis le début de la terminologie Raber. CGI - Gateway Interface Commom est une interface qui permet au serveur Web sur demande au navigateur de me laisser tous les programmes en raison de leur travail pour donner le navigateur. programme CGI (script) - un programme (script) qui fonctionne sur un serveur et communique avec le navigateur via l'interface mentionnée ci-dessus. Comme il n'y a pas de réglementation stricte sur les définitions et les termes, il est tout à fait souvent, en disant CGI, sont le résultat du programme (le script), mais pas l' interface personnellement.

E Si ce programme est, il doit posséder tout juste acceptable pour un format exécutable particulier du système d'exploitation. Les programmes sont autorisés à griffonner sur quoi que ce soit: C / C ++, Pascal, Java, Visual Basic comme, delphi et etc.

I f est le script (scénario), le système d'exploitation sous lequel tourne un serveur web doit être l'interprète de script approprié: shell, perl, tcl / tk , command.com et etc.

M. longwall, cela signifie que le programme razarbotka CGI (script) satisfait aux exigences suivantes: - permettre de dire à partir de l'entrée standard (stdin) - pour acquérir les valeurs des variables d'environnement (variables d'environnement) - signer la norme pour entrer dans le flux (stdout)

T o qui est utilisé CGI:

  • Travailler avec des systèmes de référence et bases de données.
  • Créer des documents et des ressources HTML dynamiques (y compris les compteurs, guestbooks et ainsi de suite)
  • L'administration à distance de systèmes différents.
  • Il suffit de travailler avec divers programmes, depuis l'interface HTML est facile à utiliser, facile à fabriquer et a l'air bien :)

mécanisme de travail des programmes CGI

H ow a été dit, CGI acquiert les données d'entrée du stdin de flux d'entrée standard ou de l'environnement, mais affiche les résultats de leur travail à la conclusion standard stdout. Pour ceux. qui ne savent pas ce qu'il est: le flux d'entrée standard (stdin) - d' où le programme (script) par défaut devient l'information d'entrée. En règle générale, un clavier, mais il peut être réaffecté, comme un programme (script) fera l'acquisition des données d'entrée d'un fichier, une sortie de socket stream ce programme.

Les variables d'environnement (variables d'environnement) - les variables définies pour le système comme un serveur, qui sera réalisée par CGI. .

Le flux de sortie standard (stdout) - ici le programme (script) affiche les résultats de leurs travaux. Habituellement, ce «surveiller», mais il est permis de réaffecter le flux d'entrée de prise de fichier est un programme, une imprimante et etc.

L a majorité des exemples de ce manuel est écrit sur la coque seulement, afin de simplifier la présentation de la matière.

Une sécurité elon tendances couronnement de conformité est recommandé de ne pas utiliser shell pour écrire des scripts CGI.

1.1 Appel CGI sans paramètres

P script Hauteur qui affiche la date actuelle: #!/bin/sh echo Content-type: text/html echo echo " de #!/bin/sh echo Content-type: text/html echo echo "

Aujourd'hui est «date d'écho"

"L'acte de lien HTML pour ici afin opisyvetsya <A href = http: //translate.googleusercontent.com/translate_c profondeur = 1 & amp; hl = fr & amp; prev = hp & amp; rurl = translate.google.com & amp; sl = ru & amp; sp = nmt4 & amp; tl = fr & amp; u =? http://www.shram.kiev.ua/cgi-bin/examples/today.cgi&usg=ALkJrhjdUrk4cKRwcRqeR4bhnHlkYmc92w>

IMPORTANT: L'erreur principale, ce qui rend tout le monde qui choisit griffonnait des programmes ou des scripts CGI est qu'ils oublient d'insérer un pointeur vers le type de sortie le résultat - le titre de la sortie du document. Il est également un autre exemple de la troisième ligne.

echo Content-type: text / html echo où le type de contenu: - type d'acte de sortie (text / html, image / gif , image / jpeg et ainsi de suite).
Une chaîne vide dans la conclusion exprimée que le titre a pris fin et il est suivi par le document lui-même personnellement.

1.2 Passage de paramètres script ou un programme CGI

N paramètres Transfert sont quelques méthodes de base: GET et POST. Chacun d'eux a ses avantages et ses inconvénients.

N Lorsque vous utilisez les paramètres ajoutés à l'URL demandée GET comme vous pouvez l' appeler de cette façon:

http: // certains to_host / cgi-bin / to_skript certains paramètres? qui vous permet d'agir sur ce script références dans les documents HTML. A paramètres du serveur passé affectés à la QUERY_STRING variables.

Le texte du script: #!/bin/sh echo Content-type: text/html echo echo " de #!/bin/sh echo Content-type: text/html echo echo "

Vous avez envoyé ici:

"Echo" "set | grep QUERY_STRING echo"

Environnement "Echo"
"Set echo" "</ code> et comment il a été causé par le document: <A href = http: //translate.googleusercontent.com/translate_c profondeur = 1 & amp; hl = fr & amp; prev = hp & amp; rurl = translate.google.com & amp; sl = ru & amp; sp = nmt4 & amp; tl = fr & amp; u =? http://www.shram.kiev.ua/cgi-bin/examples/link.cgi%3Fsome_parameters&usg=ALkJrhipNLssAgM8-K-gbm9_lvLWLEMH-Q> échantillon du travail (piquez ici) </a>

H o utiliser la méthode GET pour passer des paramètres contenant des informations confidentielles est inacceptable, puisque Dans ce cas, toutes les informations transmises est ouvert.

Le POST M permet de la vie privée lors du transfert des paramètres au script. Mais il transmet les paramètres au flux d'entrée standard et pour cela, nous devons utiliser le formulaire. Le serveur ne transmet pas EOF au script à la fin de la transmission. Au lieu de cela, vous devez utiliser l'environnement de la variable est CONTENT_LENGTH, afin de déterminer quelles données voulez-vous calculer la capacité de stdin.

compteur de points

Ces dernières années, le nombre de personnes qui veulent joindre à votre page hit counter pousse rythme effréné. Sur l'Internet, beaucoup d'endroits où manger, où les visiteurs peuvent prendre toutes sortes de compteurs sous tout système d'exploitation, et les attacher à vos pages.

E est le guide de la tête sera très utile à ceux qui sont intéressés par le mécanisme du travail est les compteurs, comme tous les exemples ci- joints de "rebondissements" spéciaux sur les éléments de réglage, administreniya aime aussi ne possède pas. Plus "dupé", prêt à être utilisé sur les compteurs à la recherche Altavista, moteurs de recherche, etc. Yahootakzhe.. Soit demander aux conférences de presse pertinentes (relcom.www.users, relcom.www.support, en fidoshnyh ehah ru.internet *.).

2.1 Types de mètres

P sur le mécanisme de compteurs de travail peut être divisée en deux types:
  1. scripts CGI en cours d'exécution en tant que côté serveur Inclure
  2. Les scripts CGI n'utilisent pas Server Side Include
Server Side Include (SSI) - le type de commentaire HTML qui pointe vers le serveur Web que la pièce doit être remplacée par un appel de données générées dynamiquement. Le format d'appel SSI de base dans le corps d'un document HTML est comme suit:

<!--#command tag="value"...-->

#command - l' une des nombreuses commandes compréhensibles par le serveur Web. Dans ce cas, le plus grand intérêt est commande #exec qui vous permet de programmer et d' exposer les résultats de leurs travaux. Les documents HTML du serveur Web analysés sont appelés documents analysés par le serveur.

2,2 mètres visites à la fois SSI travail

Et l'algorithme fonctionne:

  1. Le serveur reçoit la demande de navigateur pour un document HTML.
  2. Le serveur recherche la présence d'un acte d'appel SSI.
  3. Si ces appels sont détectés, leur principe est substitué résultat. Si l' équipe #exec - le résultat du programme de travail spécifié dans la «valeur».
  4. L'acte HTML généré a commencé au navigateur.

paramètres du serveur Parts H requis (serveur d'échantillons Apache ):

  1. Le registre de fichier srm.conf (s'il n'y a pas encore écrit): AddType text / html .shtml AddHandler .shtml analysés par le serveur Ces directives expriment le serveur, les fichiers avec l'extension .shtml sont des documents analysés par le serveur.
  2. Le fichier access.conf dans le répertoire dans lequel le site sera basé sur des documents analysés par le serveur dans les options ajouter l'option Comprend.
  3. Fichiers contenant SSI appelle à attribuer une extension .shtml (voir p. 1)
Nous démontrons le fonctionnement du compteur au compteur exemple de script, disponible en ligne à http://www.webtools.org/. Il est écrit en perl aujourd'hui si populaire.

A partir de là sera calculé: < ! - # Exec cgi = " ! / Cgi-bin / counter" ->
(Appuyez sur la Reload encore ne se ennuie pas)

E contre ce texte, à savoir le script donne le texte brut, et certains spectacles. De même également autorisés à entrer dans l'image. Pour ce faire, vous devez remplacer les chiffres du texte ont été dérivées des balises img src = "kartinka_s_sootvetsvuyuschey_tsifroy". Le lecteur curieux peut facilement deviner que le nombre de tag img src ... égal au nombre de chiffres de la valeur retournée par le compteur.

Dans ce compteur Rappelant le corps dans l'acte commande exécutée: <!--#exec cgi="/cgi-bin/counter"-->

2.3 mètre de ne pas utiliser SSI

B olee sophistiqué du point de vue de l' utilisateur, mais la programmation est plus complexe contre pas en utilisant SSI. le mécanisme d'un tel compteur de travail est le suivant:

  • dans le corps HTML de la loi stipule: &lt;Img src = / cgi-bin / examples / counter.cgi&gt; à savoir image demandé est pas statique et dynamique générée par un script CGI.
  • serveur reçoit une requête à cette image, exécute le script spécifié dans la balise src img.
  • le script incrémente un compteur sur la pièce, produit une image avec la valeur du compteur et lui donne au navigateur.

P arce ce type de compteur est le plus populaire sur Internet, alors l'algorithme examinera son travail plus en détail.

Avec les cryptes (counter.cgi), qui est causée dans le corps du document HTML tag img src = "... counter.cgi" écrit sur la coque a également le code source suivant (numéros de ligne ont été ajoutés pour faciliter l'explication uniquement): 1: #!/bin/sh 2: now=`date -u` 3: echo "Content-type: image/gif;" 4: echo "Expires: $now" 5: echo 6: counter|showdigits / gif; " 1: #!/bin/sh 2: now=`date -u` 3: echo "Content-type: image/gif;" 4: echo "Expires: $now" 5: echo 6: counter|showdigits

B agit le script (description de postrokovoe):
1 - Le titre du script. Il souligne à la coque, ce qui le réaliser.

2 - Déterminer la variable maintenant, qui contient le script de démarrage (tout en créant l'image). '-u' Key dit que la date / heure de la création de la sortie à l' heure GMT. Pourquoi est-ce besoin sera décrit ci-dessous.

3 - a commencé à façonner en- tête du serveur désagréable. Spécifiez le type de retour: image / gif

4 - En cette contre, vous devez fournir pour Kartika son témoignage ne pouvait pas en cache (puis plus tard ce qu'il ce compteur :) . Pour ce faire, nous précisons que le navigateur d'image résultant doit zaekspayritsya immédiatement. Ici , nous utilisons également la variable maintenant, dans une certaine ligne numéro 2. Expire Manger de cette manière conforme à la version du protocole HTTP 1.1. Mais lorsque vous utilisez la date égale à la loi créant des pépins drôles peut commencer Expire, si l'horloge sur le client derrière le serveur d'horloge pendant quelques minutes. Commence dilemme - standard, donc il se doit, mais il se trouve pas ce dont nous avons besoin. Que faire? Dans la version précédente du protocole (1.0 HTTP) Expire à 0 a été laissé au repos, mais RFC2068 dit que les clients aussi des caches en cours d'exécution sur HTTP 1.1 devrait soutenir l'utilisation d'une variation de l'ancienne Expire (Expires: 0). Alors SHTA, chers Russes, décider pour vous-même.

5 - Fin des objections titre - renvoie une chaîne vide.

6 - Utilisation des deux programmes (contre comme showdigits) génère l'image elle - même.

showdigits de compteur C programme également écrites en C en utilisant la bibliothèque pour travailler avec des fichiers GIF - libgd. Sans elle, le programme ne sera pas compilé. La dernière version des prkticheski de bibliothèque toujours disponibles à http://www.boutell.com/gd/.

W chapeau sont ces programmes:

  • contre - lecture à partir d' un montant fichier counter.rc représente la valeur précédente du compteur, il ajoute à lui et griffonner yedinichku il y a. Si non spécifié l'itinéraire vers le fichier - images avec des numéros aussi masquer ces fichiers, il prend par défaut, qui opredelnie dans le corps du programme. Puis elle a calculé la valeur du compteur et de la route à la sortie des images à stdout, que la ligne de commande est généré pour showdigits.
  • showdigits - ce programme est, en fait, constitue également une image avec le compteur actuel. Il utilise un ensemble d'images prêtes à l'emploi avec des chiffres (format gif, toutes les images de la même taille) est également obtenue à partir des données stdin du compteur. Le long de la route, le nombre de masque berutsja également l'image désirée comme l'un d'entre eux va hyphes. Puis il est allé directement à ... stdout! Et puis le serveur transmet le flux du navigateur tel qu'il est (le navigateur) montre comme une image, comme le titre a déclaré objections qu'il hyphes.
En substance Xia est ici: - Le serveur envoie le navigateur du flux de données. - Navigateur plein de toute façon, où, ainsi que le serveur a pris transmis flux de données (si elle est statique ou dynamique du produit, fichier normal ou le résultat du script de la vie), l'essence du navigateur pour savoir comment l'interpréter correctement. Car tel est le titre, qui , dans cet échantillon a été généré le script counter.cgi, mais il est en 3-5 lignes (voir. Ci - dessus). En outre, dans le cas d'un serveur de fichiers statiques génère ce titre lui-même, en fonction de vos propres paramètres, mais dans le cas de ce script cgi pour faire personnellement.

Côté serveur inclut

Mme E est clair que les documents HTML statiques - il est bon, mais généré dynamiquement - encore mieux. :) Donc, dans cette tête, on parle de la création de documents dynamiques à l'aide du serveur Side Includes. Ensemble, nous notons que la possibilité d'utiliser SSI - est la capacité de chaque serveur individuel. Certains serveur ne prend pas en charge SSI, mais ceux qui ont la possibilité, peut une variété de formats et de jeux de commandes. Alors, lisez le manuel d'instructions de votre serveur Web. Tous les exemples de ce chapitre sont pour le serveur Apache.

3.1 Qu'est-ce que SSI

H ow a été dit chapitre vpredyduschey, Server Side Include (SSI) Web - directive du serveur qui permet au serveur d'appeler la salle de remplacer toutes les données. En HTML, l'acte de l'appel SSI ressemble commentaire Format:

<!--#command tag="value"...-->

#command - soit des directives SSI comprises par le serveur Web, mais la «valeur» - ses paramètres.

données Inline peuvent être statiques et généré dynamiquement. Les données statiques tout prêts enregistrées sous forme de fichiers, des fragments de texte ou HTML. Ces données sont commodément utilisées dans le cas, à quel moment dans les différents documents HTML placé répétitif. généré dynamiquement les résultats des données de travail de tout script CGI ou système d'exploitation des commandes sur lesquelles les travaux spécifiques de serveur Web. L'utilisation de ce type de données fournit un Web-développeurs d'énormes possibilités. Mais, comme la faiblesse de la publicité russe-bourgeoise - "Ne pas oublier Orbit sans sucre!". Je veux dire, RAPPELEZ - VOUS SUR LES MESURES A suivre un accès sécurisé à l' information! Détournement de SSI peut entraîner la possibilité d'un accès non autorisé à l'information et, par conséquent, à diverses conséquences graves. .

3.2 directives de base SSI

config contrôle divers aspects du document de l' analyse (d'analyse). Attributs: ErrMsg le message d'erreur retourné au client, si l'analyse du document , il y avait un problème. sizefmt définit le format de la conclusion de la taille du fichier (octets, kilooctets, mégaoctets). timefmt définit le format de la date / heure d'emprisonnement. echo imprime la valeur d'une des variables d'environnement nizheopisanyh. Attributs: var name imprimé exec variables exécute la commande ou CGI script spécifié. Attributs: cgi indiquée (% -Encoding) URL par rapport chemin d'accès au script CGI. Si l'itinéraire ne commence pas par (/), on pense que la voie est relatif au document en cours.

script CGI passé depuis les variables blah blah PATH_INFO et QUERY_STRING demande du client d'origine.

serveur cmd exécute la chaîne spécifiée en utilisant l'interpréteur de commandes du système d'exploitation. fsize imprime la taille du fichier spécifié en ce qui concerne sizefmt. Attributs: fichier spécifie le chemin vers le fichier par rapport au répertoire courant contenant le fichier analysé. états virtuels (-Encoding%) URL par rapport chemin d'accès au fichier. Si l'itinéraire ne commence pas par (/), on pense que la voie est relatif au document en cours. flastmod imprimer la date / heure des changements dans la finition du fichier spécifié en ce qui concerne timefmt. Des attributs tels bla bla comme équipe de fsize. inclure insère un fichier texte ou tout autre acte dans le document analysé. Très utile pour les fragments répétitifs dans différents documents. Attributs: fichier spécifie le chemin vers le fichier est seulement par rapport au répertoire courant contenant le fichier analysé. états virtuels (-Encoding%) URL par rapport chemin d'accès au fichier. Si l'itinéraire ne commence pas par (/), on pense que la voie est relatif au document en cours. Les fichiers Apache inclus peuvent ainsi être imbriquées. printenv affiche une liste de toutes les variables existantes et de leurs valeurs. Attributs non. exemple:
<!--#printenv --> l'ensemble définit la valeur de la variable. Attributs: nom var variables set spécifiées. valeur indique la valeur définie par la variable. exemple:
<!--#set var="variable_1" value="some_value_of_variable_1" -->

3.3 variables d'environnement SSI

nom de fichier dans le corps du document - de DOCUMENT_NAME: <!--#echo var="DOCUMENT_NAME" --> Utilisation Sortie: < ! - # echo var = " ! de DOCUMENT_NAME" ->

DOCUMENT_URI - chemin d' accès virtuel à la description de fichier dans le corps du document: <!--#echo var="DOCUMENT_URI" --> Le résultat de l' utilisation: < ! - # Echo var = " ! DOCUMENT_URI" ->

QUERY_STRING_UNESCAPED - décoder la chaîne de requête, avec tous les métacaractères précédés par "\" dans le corps du document: <!--#echo var="QUERY_STRING_UNESCAPED" --> Le résultat de l'utilisation de: (none)

DATE_LOCAL - la date et l' heure à (locale) dans le corps du document: <!--#echo var="DATE_LOCAL" --> Le résultat de l' utilisation: < ! - # Echo var = " ! DATE_LOCAL" ->

DATE_GMT - la date actuelle est également temps (GMT) dans le corps du document: <!--#echo var="DATE_GMT" --> Le résultat de l' utilisation: < ! - # Echo var = " ! DATE_GMT" ->

LAST_MODIFIED - la date et l' heure pour changer le fichier de description de finition dans le corps du document: <!--#echo var="LAST_MODIFIED" --> Le résultat de l' utilisation: < ! - # Echo var = " ! LAST_MODIFIED" ->

3.4 Configuration du serveur

T o ordre, donc je sais serevere quelle pièce d'agir pour exposer des données, il est forcé d'analyser cet acte. documents de serveur analysés sont appelés documents analysés par le serveur.

En premier lieu , devrait se rendre compte du serveur, quels documents il avait analysé. Pour ce faire, le fichier koniguratsii (pour l' héritage Apache et NCSA serveur web est le fichier srm.conf, mais de nouvelles versions d'Apache, par exemple 1.3.4 - httpd.conf), vous devez ajouter les options suivantes: serveur Apache:

AddType text / html .shtml &lt;br&gt; AddHandler .shtml analysés par le serveur

NCSA Serveur:

AddType text / x-server-analysable-html .shtml Ces paramètres expriment que tous les fichiers avec l'extension .shtml sont analysés par le serveur, et avant de manière «donner» cet acte du serveur client doit les analyser.

Pourquoi spécifier une extension séparée pour les documents analysés par le serveur, - demander au lecteur curieux. Nous répondons. Bien sûr, personne ne permet d'ajouter une ligne dans le fichier de configuration

AddType text / x-server-analysable-html .html Cependant, cela se traduira par le fait que le serveur va examiner tous les documents avec l'extension .html, même si elles ne remettent pas SSI, l'augmentation de la charge du système, mais diminuera les performances du serveur.

Il ne faut pas oublier également que les programmes incluent , sans succès , appel CGI SSI, parce que leur opinion ne sont pas analysées par le serveur.

Pour plus d'informations sur la configuration de votre serveur pour SSI lire dokumentayiyu utiliser sur votre serveur.

applications

environnement serveur 1. Variables Annexe

H ilk est une liste de variables clés environnement de serveur avec une brève description naznacheniya.V ce cas, Apache 1.2.5 serveur avec PHP intégré / FI-2.0.1. Pour les autres serveurs Web (MS IIS, Netscape, NCSA httpd, etc.) des variables peut varier.

REMOTE_HOST - prikonnektivshegosya nom d'hôte du serveur. Dans le cas d'un proxy - le nom du proxy.
Exemple: REMOTE_HOST = lom.pvrr.ru

l' adresse IP du prikonnektivshegosya du serveur hôte - REMOTE_ADDR. Dans le cas du travail à travers un proxy - Adresse IP du proxy.
Exemple: REMOTE_ADDR = 194.87.186.11

REMOTE_PORT - le numéro de port client.
Exemple: REMOTE_PORT = 3,381

HTTP_USER_AGENT - nom / numéro de version / etc. client (navigateur). En utilisant cette variable conduit parfois dans une frénésie d'utilisateurs individuels d'Internet. :) Mais la leçon est chose très utile. Par exemple, pour détecter automatiquement les codages russes.
Exemple: HTTP_USER_AGENT = Mozilla / 4.07 [fr] (X11; I; FreeBSD 2.2.6-RELEASE i386)

HTTP_ACCEPT - types de données, en plus du texte / html, perçue par le client (navigateur)
Exemple: HTTP_ACCEPT = image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, image / png, * / *

HTTP_ACCEPT_CHARSET - qui charsety client comprend le (Navigateur).
Exemple: HTTP_ACCEPT_CHARSET = iso-8859-1, *, utf-8

HTTP_ACCEPT_LANGUAGE - quelles langues vosprinimvaet client (navigateur).
Exemple: HTTP_ACCEPT_LANGUAGE = nl, nl-BE, ru

* * *

SERVER_NAME - nom du serveur correspondant dans un des enregistrements dans DNS, ou la valeur de la ServerName variable (ou similaire) dans la configuration du serveur.
Exemple: SERVER_NAME = arche.pvrr.ru

HTTP_HOST - nom du serveur ou l' hôte virtuel qui est accessible par le client. Signification HTTP_HOST peut être égale à la valeur SERVER_NAME.
Exemple: HTTP_HOST = www.pvrr.ru

SERVER_SOFTWARE - ce que le logiciel est utilisé en tant que serveur.
Exemple: SERVER_SOFTWARE = ​​Apache / 1.2.5 PHP / FI-2.0.1

DOCUMENT_ROOT - la route de la "racine" du serveur web à partir du système "racine" fichier kopyutera sur lequel il fonctionne.
Exemple: DOCUMENT_ROOT = / usr / local / www / html

HTTP_CONNECTION - type de connexion.
Exemple: HTTP_CONNECTION = keep-alive

SERVER_PROTOCOL - le protocole utilisé pour échanger des données avec un client particulier.
Exemple: SERVER_PROTOCOL = HTTP / 1.0

REQUEST_URI - le nom de la ressource / document demandé, y compris le chemin de la racine du serveur Web. Lorsque vous accédez au répertoire racine du serveur ou cette variable est attribué un nom de répertoire ou "/" si la racine du serveur.
Пример: REQUEST_URI=/cgi-bin/tralala/script.cgi

DOCUMENT_URI - имя запрашиваемого ресурса/документа, включающее в себя путь от корня веб-сервера. Обычно инициализируется при вызове SSI. В отличие от REQUEST_URI эта переменная, в случае обращения к каталогу либо корню сервера получает значение содержащее также имя файла, являющегося Directory Index'ом этого каталога.
Пример: DOCUMENT_URI=/tralala/index.shtml

HTTP_REFERER - наполненный URL документа, по ссылке с которого вы попали на этот сервер. Данную переменную разрешено использовать при написании счетчиков.
Пример: HTTP_REFERER=http://lom.pvrr.ru/java/cgi/cgi_1.html

GATEWAY_INTERFACE - название/версия интерфейса, чрез какой сервер работает со скриптом.
Пример: GATEWAY_INTERFACE=CGI/1.1

SCRIPT_FILENAME - имя скрипта, содержащее наполненный маршрут от "корня" файловой системы.
Пример:SCRIPT_FILENAME=/usr/local/www/cgi-bin/tralala/script.cgi

SCRIPT_NAME - имя скрипта, содержащее маршрут от "корня" веб-сервера.
Пример: SCRIPT_NAME=/cgi-bin/tralala/script.cgi

REQUEST_METHOD - метод используемый заказчиком для передачи данных серверу. Бывают GET, HEAD, POST, PUT.
Пример: REQUEST_METHOD=GET

QUERY_STRING - этой переменной значение присваивается при передаче данных серверу методом GET
Пример: QUERY_STRING=button=on

CONTENT_LENGTH - этой переменной присваивается значение, равное количеству байт, переданных браузером серверу при использовании метода POST.
Пример: CONTENT_LENGTH=9

REMOTE_USER - имя пользователя. Передается только если аутентифицируется доступ к CGI скрипту.

PATH_INFO - дополнительная информация о маршруту, которую передал клиент. То кушать скрипт может приобретать некоторые параметры, содержащие информауцию о некотором "маршруте" к некоторым данным (например к файлу конфигурации, необходимому для отделки запроса отименно этого клиента). Этот маршрут "виртуальный" - т.е от "корня веб-сервера". Остальные данные разрешено передавать как обычно - методом GET или POST.
Пример: PATH_INFO=/some/path

PATH_TRANSLATED - то бла бла , что также PATH_INFO, только маршрут физический - "от корня файловой системы"

REMOTE_IDENT - Если HTTP сервер поддерживает идентификацию согласно RFC 931, то этой переменной присваивается имя пользователя получаемое от сервера.

SERVER_ADMIN - e-mail правителя веб-сервера.
Пример: [email protected]

SERVER_PORT - порт, какой "слушает" веб-сервер.
Пример: SERVER_PORT=80

* * *

HTTP_X_FORWARDED_FOR - в случае труда чрез прокси - IP адрес клиента, работаеющего чрез прокси.
Пример: HTTP_X_FORWARDED_FOR=194.87.186.11

HTTP_VIA - имя, номер порта, разновидность ПО прокси-сервера.
Пример: HTTP_VIA=1.0 proxy1.pvrr.ru:8080 (Squid/2.1.PATCH1)

HTTP_CACHE_CONTROL - что-то связанное с возрастом акта в кэше прокси сервера :) Лгать никак не буду - никак не знаю :)
Пример: HTTP_CACHE_CONTROL=max-age=259200