Сервер Web своими руками. Язык HTML, приложения CGI и ISAPI

       

Пример документа HTML с фреймами


В качестве примера приведем в сокращенном виде исходный текст документа, определяющего фреймы, показанные на рис. 6.1.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">

<HTML>

<HEAD>

<TITLE>Alexandr Frolov & Grigory Frolov</TITLE>

</HEAD>

<FRAMESET ROWS="90,*" FRAMEBORDER=0 BORDER=1>

  <FRAME SCROLLING="no" NAME="title" NORESIZE SRC="title.htm" MARGINHEIGHT=1>

 

  <FRAMESET COLS="25%,75%" FRAMEBORDER=0 BORDER=1>

    <FRAME SCROLLING="auto" NAME="toc" SRC="toc.htm">

    <FRAME SCROLLING="auto" NAME="main page" SRC="main.htm">

  </FRAMESET>



  <NOFRAME>

    <BODY BGCOLOR="#FFFFFF">

    <TABLE><TR><TD VALIGN=TOP><IMG SRC="frlogo2.gif"></TD><TD VALIGN=TOP><IMG SRC="frlogor.gif"></TD></TR></TABLE>

    <H2>Добро пожаловать на наш сервер WEB!</H2>

    <P>На этом сервере вы можете найти подробную информацию

    о наших книгах из серий &quot;Персональный компьютер. Шаг за шагом&quot; и

    &quot;Библиотека системного программиста&quot;:

. . .

    <A HREF="http://www.glasnet.ru/~frolov/index.html" TARGET="_top">Домашняя страница</A><BR>

    <A HREF="news.htm" TARGET="main page">Новости</A><BR>

    <A HREF="books.htm" TARGET="main page">Книги</A><BR>

    <A HREF="terra.htm" TARGET="main page">Компьютерра</A><BR>

    <A HREF="frends.htm" TARGET="main page">Партнеры и друзья</A><BR>

    <A HREF="virchk.htm" TARGET="main page">Поиск вирусов</A><BR>

    <A HREF="../eng/home.htm" TARGET="_top">Set English Language</A><BR>


    <CENTER><HR>
    Эту страницу лучше всего просматривать навигаторами MS Internet Explorer v3.0 или Netscape Navigator
    <TABLE><TR><TD>
    <A HREF="http://www.microsoft.com/ie"><IMG SRC="ieanim.gif" ALT="MS Internet Explorer v3.0" BORDER=0></A>
    </TD><TD>
    <A HREF="http://home.netscape.com"><IMG SRC="netnow3.gif" ALT="Netscape Navigator" BORDER=0></A>
    </TD></TR></TABLE>
    <IMG SRC="http://www.dials.ccas.ru/scripts/w3count.exe?frolov1" ALIGN=bottom><BR>
    <FONT SIZE=2>Посылайте ваши комментарии по адресу <A HREF="mailto:frolov@glas.apc.org" >frolov@glas.apc.org</A></FONT>
    <BR><FONT SIZE=1>&copy; Александр Фролов, Григорий Фролов, 1997</FONT>
    </CENTER>
    </BODY>
 
  </NOFRAME>
</FRAMESET>
</HTML>
Здесь мы определили два набора фреймов, причем второй набор вложен в первый.
Для первого набора мы определили один фрейм, расположенный горизонтально. Первый из них имеет высоту 90 пикселов и используется для размещения нашего логотипа, второй занимает все оставшееся пространство:
<FRAMESET ROWS="90,*" FRAMEBORDER=0 BORDER=1>
Как видно из этой строки, фреймы не имеют рамки (значение параметра FRAMEBORDER равно 0). Мы убрали рамку, потому что она выглядит слишком тяжеловесно. Дополнительно мы указали, что при просмотре в навигаторе Netscape Navigator фреймы должны иметь рамку толщиной 1 пиксел.
Зачем мы эти сделали?
Нам хотелось, чтобы сервер выглядел по возможности одинаково в окнах навигаторов Microsoft Internet Explorer и Netscape Navigator. Однако эти навигаторы работают по-разному с рамками фреймов.
Если в операторе <FRAMESET> указать, что фреймы не должны иметь рамки, то Microsoft Internet Explorer не рисует трехмерную рамку. Однако между фреймами остается маленький зазор серого цвета, который выглядит как рамка. Эту рамку можно использовать, например, для изменения размера фрейма (если при определении фрейма для него не указан параметр NORESIZE, запрещающий изменение размера).


Навигатор Netscape Navigator в указанной выше ситуации ( когда значение параметра FRAMEBORDER равно нулю) не оставляет никакого зазора между фреймами. В этом и выражается отличие. Для того чтобы сделать зазор размером в один пиксел, мы указали параметр BORDER, который распознается только навигатором Netscape Navigator.
В свободном пространстве ниже фрейма первого набора мы расположили еще один набор фреймов. Второй набор фреймов состоит из двух фреймов, расположенных вертикально. Эти фреймы занимают, соответственно, 25% и 75% ширины родительского фрейма:
<FRAMESET COLS="25%,75%" FRAMEBORDER=0 BORDER=1>
Вернемся опять к первому набору фреймов.
В этом наборе определен только один фрейм:
<FRAME SCROLLING="no" NAME="title" NORESIZE SRC="title.htm" MARGINHEIGHT=1>
Так как этот фрейм предназначен для отображения логотипа, для него не используется свертка. Поэтому значение параметра SCROLLING равно “no”.
Имя фрейма указано в параметре NAME как “title”. Дополнительно мы указали параметр NORESIZE, запретив изменение размера фрейма мышью.
Параметр SRC указан как “title.htm”. Из файла с этим именем загружается документ HTML при отображении фрейма. Заметим, что файл title.htm расположен в том же каталоге, что и файл, определяющий фреймы.
Параметр MARGINHEIGHT задает отступ по высоте, равный 1 пикселу. Мы указали этот параметр для уменьшения зазора между верхней границей фрейма и графическими изображениями логотипа.
Файл title.htm содержит таблицу с двумя графическими изображениями и не имеет никаких особенностей:
<HTML>
  <BODY BGCOLOR="#FFFFFF">
    <TABLE>
      <TR><TD VALIGN=TOP><IMG SRC="f2.gif"></TD>
      <TD VALIGN=TOP><IMG SRC="frlogo.gif"></TD></TR>
    </TABLE>
  </BODY>
</HTML>
Теперь перейдем к второму набору фреймов, разделяющих по вертикали нижнюю часть окна навигатора на две половины. Два фрейма из этого набора определены следующим образом:


<FRAME SCROLLING="auto" NAME="toc" SRC="toc.htm">
<FRAME SCROLLING="auto" NAME="main page" SRC="main.htm">
Так как для параметра SCROLLING указано значение "auto", то если содержимое не помещается в окне фрейма, около фрейма появляются полосы просмотра.
Окно левого фрейма называется “toc”. Оно загружается из файла с именем toc.htm, который состоит из ссылок на разделы сервера:
<HTML>
  <BODY BGCOLOR="#B0FFD8">
    <BASEFONT SIZE=2>
    <LEFT>
      <A HREF="http://www.glasnet.ru/~frolov/index.html" TARGET="_top">Домашняя страница</A><BR>
      <A HREF="main.htm" TARGET="main page">Добро пожаловать</A><BR>
      <A HREF="news.htm" TARGET="main page">Новости</A><BR>
      <P><A HREF="books.htm" TARGET="main page">Книги</A><BR>
      <P><A HREF="capital.htm" TARGET="main page">КАПИТАЛ</A><BR>
      <A HREF="terra.htm" TARGET="main page">КОМПЬЮТЕРРА</A><BR>
      <A HREF="qa.htm" TARGET="main page">Вопросы и ответы</A><BR>
      <A HREF="links.htm" TARGET="main page">Ресурсы Internet</A><BR>
      <P><A HREF="virchk.htm" TARGET="main page">Вирусы</A><BR>
      <P><A HREF="frends.htm" TARGET="main page">Партнеры и друзья</A><BR>
      <A HREF="../guest/gbook.htm" TARGET="main page">Книга гостей</A><BR>
      <P><A HREF="../eng/home.htm" TARGET="_top">Set English Language</A><BR>
     </LEFT>
  </BODY>
</HTML>
Обратите внимание, что в операторах <A> параметр TARGET, задающей имя окна для загрузки документа, имеет различные значения. В параметре TARGET вы должны указать имя окна, в которое будет выполняться загрузка документа.


Для параметра TARGET можно указывать одно из нескольких предопределенных имен:

Имя окна
Описание
_top
Документ HTML будет загружен в окно самого верхнего уровня
_parent
Документ HTML загрузится в родительское окно (по отношению к текущему окну)
_self
Документ будет загружен в текущее окно
_blank
Для загрузки документа будет использовано новое окно без имени

Когда пользователь выбирает строку “Домашняя страница”, документ HTML с адресом http://www.glasnet.ru/~frolov/index.html загружается в окно, которое называется _top. В результате указанный документ займет все внутреннее пространство окна навигатора.
Остальные ссылки, кроме последней, загружают документы в окно с именем main page. Это окно соответствует фрейму, расположенному справа и принадлежащему второму набору фреймов.
При необходимости вы можете загружать документы и в окно левого фрейма, указав в параметре TARGET значение toc. При этом можно сделать так, что при выборе в левом фрейме какого-либо раздела содержимое этого фрейма полностью изменяется, отображая, например, названия подразделов нового раздела.
Документ main.htm, который первоначально загружается в окно фрейма main page, представлен ниже:
<HTML>
<BODY BGCOLOR="#FFFFFF">
<BGSOUND SRC="../midi/bach.mid"></BGSOUND>
<embed src="../midi/bach.mid" hidden="yes">
<H2>Добро пожаловать на наш сервер WEB!</H2>
<P>На этом сервере вы можете найти подробную информацию
о наших книгах из серий &quot;Персональный компьютер. Шаг за шагом&quot; и
&quot;Библиотека системного программиста&quot;:
<UL>
<LI>аннотации и оглавления;
<LI>исходные тексты программ, опубликованных в книгах;
<LI>наши планы на будущее;
<LI>список ошибок, замеченных в наших книгах;
<LI>информацию о наших друзьях;
<LI>бесплатные книги, доступные в режиме online
</UL>


Эти серии книг предназначены для самого широкого
круга людей, чья работа связана с компьютерами.
<P>Мы подготовили для вас и кое-что еще!
<CENTER><HR>
Эту страницу лучше всего просматривать навигаторами MS Internet Explorer v3.0 или Netscape Navigator
<TABLE><TR><TD>
<A HREF="http://www.microsoft.com/ie"><IMG SRC="ieanim.gif" ALT="MS Internet Explorer v3.0" BORDER=0></A>
</TD><TD>
<A HREF="http://home.netscape.com"><IMG SRC="netnow3.gif" ALT="Netscape Navigator" BORDER=0></A>
</TD></TR></TABLE>
<P><IMG SRC="http://www.dials.ccas.ru/scripts/w3count.exe?frolov1" ALIGN=bottom><BR>
<FONT SIZE=2>Посылайте ваши комментарии по адресу <A HREF="mailto:frolov@glas.apc.org" >frolov@glas.apc.org</A></FONT>
<BR><FONT SIZE=1>&copy; Александр Фролов, Григорий Фролов, 1997</FONT>
</CENTER>
</BODY>
</HTML>
Рассмотрим этот документ.
В самом начале документа находятся два оператора, предназначенные для вставки звукового файла. В данном случае мы вставили музыкальный файл MIDI:
<BGSOUND SRC="../midi/bach.mid"></BGSOUND>
<embed src="../midi/bach.mid" hidden="yes">
Первый из этих операторов работает только в навигаторе Microsoft Internet Explorer, второй - еще и в навигаторе Netscape Navigator.
Ваш сервер доступен всей сети Internet, а к этой сети подключены самые разные компьютеры с различными операционными системами и навигаторами. Разумеется, вы едва ли сможете обеспечить одинаковый внешний вид страниц сервера для всех этих систем, однако стоит обязательно побеспокоиться о наиболее распространенных навигаторах. Таковыми на момент написания этой книги являются Netscape Navigator и Microsoft Internet Explorer. Как правило, большинство серверов WWW оптимизируются именно для работы с этими навигаторами.


Если вы поступаете также, где- нибудь на видном месте неплохо было бы сообщить, какими навигаторами лучше всего просматривать страницы вашего сервера. Мы это сделали следующим образом, разместив пиктограммы навигаторов и ссылки на серверы, откуда их можно получить, в таблице:
<CENTER><HR>
Эту страницу лучше всего просматривать навигаторами MS Internet Explorer v3.0 или Netscape Navigator
<TABLE><TR><TD>
<A HREF="http://www.microsoft.com/ie"><IMG SRC="ieanim.gif" ALT="MS Internet Explorer v3.0" BORDER=0></A>
</TD><TD>
<A HREF="http://home.netscape.com"><IMG SRC="netnow3.gif" ALT="Netscape Navigator" BORDER=0></A>
</TD></TR></TABLE>
Строка, показанная ниже, вставляет в документ HTML так называемый счетчик посещений:
<P><IMG SRC="http://www.dials.ccas.ru/scripts/w3count.exe?frolov1" ALIGN=bottom><BR>
В документе этот счетчик может выглядеть по-разному, в зависимости от способа реализации. В нашем случае счетчик формируется программой CGI с именем w3count.exe, которой в качестве параметра передается имя файла frolov1. Этот файл хранит значение счетчика.
Заметим, что программы CGI вам скорее всего придется составлять самим, хотя многие поставщики услуг Internet обычно предоставляют некоторые программы CGI для тех, кто создает на сервере поставщиков свои виртуальные серверы WWW. В отдельной главе нашей книги мы расскажем вам о том, как составлять такие программы.
В конце файла main.htm мы разместили наш почтовый адрес и сведения об авторских правах на информацию, расположенную на сервере:
<FONT SIZE=2>Посылайте ваши комментарии по адресу <A HREF="mailto:frolov@glas.apc.org" >frolov@glas.apc.org</A></FONT>
<BR><FONT SIZE=1>&copy; Александр Фролов, Григорий Фролов, 1997</FONT>
Это является общепринятой практикой и при создании своего сервера вам следует поступить аналогичным образом.
Приведенные в этом разделе исходные тексты документов HTML с фреймами вы сможете найти на дискете, которая продается вместе с книгой, в каталоге Chap6/Frames.

Содержание раздела