На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » Сайтостроительство » HTML/DHTML

Основы языка разметки гипертекста - HTML (Ч.5.1. Сценарии выполняемые сервером.)

5. Введение в сценарии

В предыдущих разделах данного руководства мы изучили основы языка HTML. Полученных знаний вполне достаточно для представления разнообразной информации в Web, но не для создания коммерческих сайтов. В данной главе мы пойдем немножко дальше, но информация представленная здесь носит вводный характер. Для углубленного изучения данных тем вам понадобятся дополнительные знания в области программирования и операционных систем.

5.1. Сценарии выполняемые сервером

Для того чтобы понять, что такое серверные сценарии расмотрим (достаточно упрощенно) схему взаимодействия Web-клиент/Web-сервер. При вводе пользователем, в адресной строке броузера, URL необходимого ресурса или активизации гиперссылки, Web-броузер посылает http-запрос серверу:

[Метод запроса] [URL ресурса] [Заголовок]

Например для получения документа - doc1.htm запрос выглядит примерно так:

GET /doc1.htm HTTP/1.0

Результатом обработки запроса Web-сервером является http-ответ:

[Заголовок] [Код возврата] [MIME-заголовок] [Пустая строка-разделитель] [Тело ответа]

Например если наш предыдущий запрос Web-серверу прошел успешно, ответ будет примерно таким:

HTTP/1.0 200 ОК
Content-Type: text/html

HTML
содержимое документа doc1.htm
/HTML

В результате данного взаимодействия мы получим от Web-сервера и увидим в окне Web-броузера содержимое HTML-документа - doc1.htm. Такое взаимодействие позволяет получать и просматривать любые статические ресурсы сервера, но как быть когда мы хотим большего. Например мы хотим обрабатывать данные, введенные пользователем в формы на нашей Web-странице, или наоборот отправить пользователю результаты работы прикладной программы в формате HTML. Все эти задачи решаются при помощи сценариев выполняющихся на сервере.

Итак сценарий выполняющийся на сервере это программа написанная на одном из языков программирования, которые поддерживются платформой Web-сервера. Какие они бывают, на чем и для чего пишутся ?

По большому счету сценарии можно разделить на две больших группы: сценарии внедряемые в HTML-документы и CGI-сценарии.

Внедряемые сценарии

Сценарии внедряемые в HTML-документы, это фрагменты кода интерпретируемого языка программирования, которые внедряются в документ при помощи специальных директив (можно сказать тегов). Данные сценарии используются для динамического создания HTML-документов в зависимости от некоторых условий (например от даты запроса). Как правило HTML-документы, содержащие сценарии выполняемые сервером, должны иметь специальное расширение. Web-сервер при запросе данного файла пользователем, первоначально проводит анализ содержимого файла и выполняет обнаруженные сценарии, а затем объединяет результаты работы сценария с содержимым документа и отправляет его Web-броузеру пользователя.

Технология внедрения сценария в документ и язык разработки зависят от типа платформы Web-сервера и его настройки.

Для платформы NT/IIS существует реализация данной технологии под названием ASP (Active Server Pages - Активные страницы сервера). Документы-активные страницы должны иметь расширение ASP, сценарии пишутся на VBscript или Jscript, а их внедрение осуществляется при помощи директивы % код сценария %.

Для платформы UNIX/Apache выбор средств гораздо больше, один из вариантов реализации данной технологии это внедрение сценариев на языке PHP. Данные документы должны иметь расширение PHP, а внедрение сценария в документ осуществляется при помощи директивы ?PHP код сценария ?.

HTML-документ содержащий, внедряемый сценарий сервера, выглядит примерно так (так он выглядит на Web-сервере, а в окне своего броузера вместо кода сценария вы увидите результаты его работы) :

HTML
HEAD
TITLEДокумент test.php со сценарием счетчика/TITLE
/HEAD
BODY
H1 align=centerДобрый день !/H1
pВы являетесь ?PHP

    $counter=0;
    $filename = "count.dat";
    $fp = @fopen($filename,"r");
    if ($fp) {
        $counter=fgets($fp,10);
        fclose($fp);
    } 
    $counter++;
    print $counter;
    $fp = fopen($filename,"w");
    if ($fp) {
        $counter=fputs($fp,$counter);
        fclose($fp);
    }
? посетителем моего сайта !!!
HR
... данные страницы ....
/BODY
/HTML

CGI-сценарии

CGI-сценарии это приложения разработанные в соответствии со спецификацией CGI (Common Gateway Interface). Данная спецификация описывает формат и общие правила обмена данными между Web-сервером и внешним приложением. Для обработки потока данных от клиента к Web-серверу и формирования обратного потока из результатов работы приложения в спецификакции CGI определены следующие элементы:

  • Переменные окружения - набор переменных среды, которые заполняются сервером при запуске CGI-сценария и содержат информацию о служебных параметрах http-запроса, который инициировал запуск данного сценария;

  • Аргументы командной строки - используются для передачи CGI-сценарию входных параметров, которые передаются как часть URL. Например: http://www.site.ru/cgi-bin/prog.pl?par1=val1;

  • Стандартные потоки ввода/вывода - при передачи данных от сервера CGI-сценарию организуется взаимодействие: поток STDOUT сервера с потоком STDIN сценария, а при обратной передаче: поток STDOUT сценария взаимодействует с потоком STDIN сервера;

Для разработки CGI-сценариев, подходит множество языков программирования. Единственное ограничение - это поддержка данного языка платформой Web-сервера. Поскольку CGI-сценарий является внешним приложением (не внедряется в документ) для его разработки можно использовать компилируемые языки программирования. Основные языки разработки CGI-сценариев следующие:

  • Unix Shell (интерфейс командной строки Unix);

  • Perl (интерпретатор);

  • C, С++ (компилятор);

  • Visual Basic (компилятор);

В общих чертах алгоритм разработки CGI-сценария выглядит следующим образом:

  1. Определение метода http-запроса.
    Для этого необходимо считать значение стандартной переменной среды сервера REQUEST_METHOD, в которой содержится тип http-запроса: GET, POST (например в языке С для доступа к переменным среды используется функция - getenv("ИМЯ ПЕРЕМЕННОЙ") );

  2. Получение данных от сервера.
    Для метода GET данные передаются как часть URL запроса. Часть URL (остаток после имени сценария), содержащая передаваемые параметры, записываются в переменную среды сервера QUERY_STRING (в данном случае действует ограничение на длину передаваемого блока данных, обычно при записи URL усекается до 255 знаков).
    Для получения данных необходимо считать значение переменной среды QUERY_STRING. Например при отправке данных из формы HTML-документа на обработку сценарию-prg, http-запрос будет выглядеть так:

    GET http://www.site.ru/cgi-bin/prg?поле1=знач1&поле2=знач2...

    А переменная среды QUERY_STRING = поле1=знач1&...&полеN=значN

    Для метода POST данные передаются в STDIN сценария как тело http-запроса, в переменную среды сервера CONTENT_LENGTH записывается количество символов входного потока, а в переменную CONTENT_TYPE записывается MIME-тип передаваемых данных.
    Для получения данных необходимо считать CONTENT_LENGTH символов из STDIN сценария. Например при отправке данных из формы HTML-документа, на обработку сценарию-prg, http-запрос будет выглядеть так:

    POST http://www.site.ru/cgi-bin/prg HTTP/1.0
    Content-Type: application/x-www-form-urlencoded

    поле1=знач1
    ...
    &полеN=значN

  3. Декодирование полученные данных.
    Для дальнейшего использования полученных данных необходимо выполнить их небольшое преобразование, поскольку в полученной последовательности все пробелы заменяются символом +, а символы с десятичным кодом более 128 заменяются на %ХХ, где ХХ-шестнадцатеричный код;

  4. Обработка данных.
    Производится выполнение основных функций CGI-сценария, это может быть операции поиска в БД, выполнение определенных расчетов на основе полученных данных, регистрация пользователя в БД, обработка почты и многое другое;

  5. Формирование ответа в форме HTML-документа.
    Производится динамическое создание HTML-документа содержащего результаты работы сценария и вывод его в STDOUT сценария. В простейшем случае формируется документ содержащий уведомление пользователя о выполнение сценария. Перед выводом в STDOUT, сценария документ необходимо снабдить MIME-заголовком и разделительной строкой (пара символов CR) отделяющей заголовок от содержимоого тела ответа. Например вот так:

    Content-Type: text/html

    HTML
    Все ОK !
    /HTML

Реализации вышеуказанного алгоритма для различных платформ Web-серверов могут существенно отличаться, но приведенные этапы создания сценария достаточно общие.

Вот пожалуй и все о сценариях сервера. Как я уже говорил, изложенный в этой главе материал, носит ознакомительный характер. Я не являюсь экспертом в области разработки приложений Web-сервера (моя основная работа с этим не связана). Информация данного раздела пригодится вам для понимания общих принципов разработки приложений Web-клиент/Web-сервер.

Для углубленного изучения материала вам придется прикупить литературы по конфигурированию ПО Web-серверов, программированию и сетевым протоколам. Много полезного можно найти в Internet (благо ключевых слов, вы теперь знаете много: CGI, ASP, PHP...).

Рекомендую вам посетить сайты, материалы которых я использовал для подготовки данной главы:

  • perl.mastak.ru - сайт клуба знатаков CGI, почитайте раздел Статьи/Articles и вы найдете массу примеров сценариев и рекомендаций специалистов-практиков по настройке Web-серверов и разработке приложений;

  • CGI от CITFORUM - раздел на сайте центра информационных технологий, посвященный CGI программированию, содержит массу учебных и справочных материалов;

  • ASP от CITFORUM - раздел на сайте центра информационных технологий, посвященный технологии ASP, содержит массу материалов по данной теме;

  • PHP от CITFORUM - раздел на сайте центра информационных технологий, посвященный PHP программированию, содержит описание языка, примеры и методы разработки PHP-сценариев;

  • wml.webservis.ru - сайт CGI-для всех, учебный сайт типа - CGI для чайника, много примеров и ссылок;

Dmitriy Krasyuk
Основы HTML

Спонсор раздела

Рассылки Subscribe.ru:

Библиотека сайтостроительства - новости, статьи, обзоры
Дискуссионный лист для web-разработчиков
Подписка на MailList.Ru
Автор: NunDesign
Другие разделы
Оптимизация сайтов
Web-студии
» Новое в разделе
Web-дизайн
Web-программирование
Интернет-реклама
Раскрутка сайта
Web-графика
Flash
Adobe Photoshop
Рассылка
Инструменты вебмастера
Контент для сайта
HTML/DHTML
Управление web-проектами
CSS
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100