1. Работа на стороне сервера.
На стороне сервера отрабатывает какая-либо программа, результатом работы которой служит готовая HTML-страница. Программа сама генерирует HTML-код, так как будто он написан вручную.
Пользователь не видит вашей программы. Один и тот же сайт может выглядеть по-разному для разных пользователей.
2. Понятие протокола обмена данными.
Стандарт
CGI (Common Gateway Interface) для стандартизации обмена данными в Internet (интерфейс общего доступа).
CGI - не язык, это реализация стандарта интерфейса. Не важно на каком языке написан скрипт.
Специализированные языки:
- AWK
- Perl
- VisualBasicScript
- JavaScript - может работать на стороне сервера.
- Pascal
- C
HTML-страница клиента
<form action="f.cgi>
<input type="submit" value="SUBMIT">
…
</form> |
Сервер
f.cgi |
После клика на кнопку SUBMIT данные формы передаются на сервер, на сервере запускается программа, указанная в методе action (f.cgi).
Action указывает какой файл на сервере будет обрабатывать данные формы. Результатом является HTML-страница, которая посылается обратно клиенту.
|
CGI не зависит ни от платформы машины, ни от операционной системы.
Любой сервер формирует набор собственных переменных с заданными именами, имена переменных фиксированы на любых серверах. Эти переменные называют: переменные сервера, переменные CGI, переменные окружения - это все одно и тоже.
Переменные CGI содержат следующую информацию (можно разделить на три группы):
- Информацию о браузере клиента
- Информацию о сетевых ресурсах клиента (его адрес, имя…)
- Информацию о сервере
Как происходит получение информации:
Адрес: http://mail.ru
Вместе с этим посылается информация о клиенте.
3. Переменные CGI.
(их порядка 40 штук)
Регистр написания букв не принципиален.
Auth_type
- содержит способ аутентификации (идентификации) пользователя на сервере.
Способы аутентификации:
- Guest (с минимальными правами). Характерен тем, что имя и пароль пользователя не фиксируется и не определяется.
- Базовая аутентификация. Каждый пользователь имеет свое уникальное имя и пароль, которые передаются в незашифрованном виде.
- Аутентификация с кодирование информации.
!!! Все переменные строковые.
Content_length
переменная содержит длину посылки в байтах.
Имя_поля_формы, значение_поля_формы
- из этих переменных считываем количество символов (байт).
Request_method
- переменная содержит способ (метод) с помощью которого были отправлены данные формы.
Методы: "GET", "POST". Эти константы должны быть написаны заглавными буквами.
Request_method="MAILTO"
"HEAD"
"PUT"
Метод "GET"
При передаче данных методом "GET", длина строки не может превышать 255 символов, данные передаются в явном виде и приписываются к строке адреса.
"GET"?name=value&name=value
Например, при обращении к своему почтовому ящику на Rambler в строке адреса вы видите:
http://banners.rambler.ru:8080/i.ban?pg=457&ifr=1
плюсы: простота и быстрота обработки
минусы: т.к. данные в явном текстовом виде, нельзя передавать пароль.
Метод "POST"
Объем передаваемых данных не ограничен.
Данные, передаваемые методом "POST", передаются в шестнадцатиричном байтовом коде, аналогично тому как передаются сообщения электронной почты (аналогично кодировке электронной почты).
Query_string
- содержит строку данных, которые были переданы методом
"GET" (все, что после знака
?
, целиком просто как строка).
Для метода
"POST" такой переменной не существует, нужно считывать посимвольно (побайтно).
Remote_addr
- содержит физический IP-адрес пользователя, обратившегося к серверу (например, 255.12.121.2)
Remote_host
В переменной содержится адрес того компьютера, с которого вы обратились к серверу.
Remute_ident
Переменная содержит имя пользователя, под которым он зарегистрирован на сервере (логин).
Remote_user
устанавливает истинное имя пользователя, которое зарегистрировано на сервере.
Server_name
содержит имя сервера (с которого передан запрос).
Server_port
содержит номер порта, через который осуществляется обмен данными.
HTTP-протокол по умолчанию работает через 80-й порт (это участок памяти).
POP3 - 23 (обычно по 23 порту, это все настраиваемые вещи).
FTP -81.
http://mail.ru:8080 если порт не по умолчанию, то нужно указать номер порта в адресе.
Server_path
- в этой переменной содержится полный путь (локальный, в пределах сервера) к файлу, содержащему CGI-программу.
Script_alias
- содержит имя виртуальной директории, в которой хранятся файлы скриптов.