Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Интернет технологии -> HTML / DHTML -> Основы языка разметки гипертекста - HTML


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...).

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

[ Содержание ] [ Вперед ]


 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100