Так все выглядит с точки зрения пользователя... А сервер при запуске скрипта формирует среду окружения , в которой скрипт может найти всю доступную информацию о HTTP-соединении и о полученных в запросе параметрах.
Большинство переменных CGI стандартизованы. Однако каждый новый сервер может определять свои дополнительные переменные. Вот стандартные переменные CGI-окружения:
| REQUEST_METHOD | Метод запроса HTTP. Протокол HTTP использует для запроса к серверу методы GET и POST. Они отличаются тем, что в методе GET запрос является частью URL, а при использовании метода POST данные передаются в теле HTTP-запроса. Соответственно, для CGI тоже есть различие: при GET запрос идет в переменную QUERY_STRING, а при POST подается на стандартный ввод скрипта - STDIN Пример: REQUEST_METHOD=GET |
| QUERY_STRING | Это строка запроса при методе GET. Запрос отправляемый из формы, кодируется
браузером, поскольку не все символы разрешены в URL. В URL все пробелы заменяются на знак +, а все специальные символы на последовательность %hh, где hh -
шестнадцетиричный код символа. Кроме того, разделителем полей формы является знак &, так что при обработке форм надо производить декодирование. Пример: QUERY_STRING= name=Ivanov+Ivan&age=50 |
| CONTENT_LENGTH | Длина тела запроса в байтах. При методе запроса POST необходимо считать со стандартного входа (STDIN) CONTENT_LENGTH байт, а потом производить их обработку. Пример: CONTEN_LENGTH= 31 |
| CONTENT_TYPE | Тип тела запроса (для форм кодированных вышеуказанным методом, тип определяется как application/x-www-form-urlencoded) |
| GATE_INTERFACE | Версия протокола CGI. Пример: GATE_INTERFACE= CGI/1.1 |
| REMOTE_ADDR | IP-адрес удаленного хоста, делающего запрос. Пример: REMOTE_ADDR=139.142.24.157 |
| REMOTE_HOST | Если запрашиваемый хост имеет доменное имя, то эта переменная содержит его, в противном случае это тот же самый IP-адрес, что и REMOTE_ADDR. Пример: REMOTE_HOST=somehost.com |
| SCRIPT_NAME | Имя скрипта (виртуальное), использованное в запросе. Для получения реального пути на сервере используйте переменную SCRIPT_FILENAME Пример: SCRIPT_NAME= /~pvg/guestbook.cgi |
| SCRIPT_FILENAME | Имя файла скрипта на сервере. Используя эту переменную вы получаете именно физический путь к файлу. Таким образом, файл можно использовать. Пример: SCRIPT_FILENAME= /home/pvg/cgi-bin/guestbook.cgi |
| SERVER_NAME | Имя сервера, чаще всего доменное, но в редких случаях за неимением такого оно может быть IP-адресом. Пример: SERVER_NAME= www.my.com |
| SERVER_PORT | TCP-порт сервера, используемый для соединения. По умолчанию HTTP-порт имеет номер 80, хотя в некоторых случаях он может быть и другим. Пример: SERVER_PORT=80 |
| SERVER_PROTOCOL | Версия протокола сервера Пример: SERVER_PROTOCOL=HTTP/1.1 |
| SERVER_SOFTWARE | Программное обеспечение сервера. Пример: SERVER_SOFTWARE = Apache/1.0 |
| AUTH_TYPE REMOTE_USER | Эти переменные определены в том случае, когда запрошенный ресурс требует аутентификации пользователя. |