Об интернет-магазинах, расплодившихся, словно грибы после дождя, уже не стоит и говорить. Интернет-магазин — это большой интерактивный сайт, и создать его без серверного программирования невозможно. (Можно, конечно, но тогда у вас получится простейший сайт фирмы со списком товаров и сведениями о заказе.) Также без серверного программирования не удастся создать полноценный поисковый сайт, доску объявлений и даже полноценный архив программ.
А поэтому нам просто необходимо выяснить, как создаются такие вот интерактивные сайты. И начнем мы, как всегда, с теории.
Принципы создания интерактивных сайтов
Перечислим основные принципы разработки интерактивных Web-сайтов.
1. Все или почти все страницы сайта генерируются серверными программами. Статичные страницы хоть и присутствуют, но составляют весьма незначительный процент и содержат данные, не меняющиеся с течением времени, например сведения о владельце сайта или справочные данные о пользовании сайтом.
2. Данные для генерации страниц, как правило, берутся из баз данных, поскольку программирующее человечество пока что не придумало лучшего способа организованно хранить однотипные данные, чем помещение их в реляционные базы, которые вне конкуренции. Базы данных практически всегда работают под управлением сервера и очень часто — на отдельном серверном компьютере. Нередко также используется хранение данных в текстовых файлах, но это справедливо, в основном, для фрагментов Web-страниц (серверные включения).
3. Очень часто используется разграничение доступа к сайту. Разграничение доступа подразумевает, что разные посетители сайта имеют различные права на доступ к тем или иным данным, опубликованным на сайте. Так, обычные посетители могут только просматривать данные, в то время как "опытные" посетители имеют возможность также вносить в них некоторые изменения. Ну, а администраторы сайта, разумеется, могут творить с ними все, что захотят:
4. Если сайт использует разграничение доступа, то он обязательно должен предусматривать возможность входа (по-английски — logon). Чтобы войти на сайт, посетитель должен зайти на особую страницу входа и набрать свои имя и пароль. Если эти имя и пароль занесены в список посетителей сайта, серверная программа разрешает посетителю войти на сайт. В противном случае посетителю предлагается зарегистрироваться на сайте.
5. Сайт, использующий разграничение доступа, должен также предусматривать возможность регистрации посетителя. Если это общедоступный сайт, наподобие интернет-магазина, то посетитель регистрируется на нем, вводя данные о себе на особой странице регистрации, после чего они помещаются в список посетителей сайта. Если же это закрытый сайт, то для регистрации на нем надо будет обратиться к его администратору.
6. Сайт, использующий разграничение доступа, должен также предусматривать возможность выхода с сайта. При этом серверная программа "забывает", что данный посетитель вошел на сайт, очищая память, отведенную для хранения данных в нем, хотя соответствующая запись в списке посетителей, конечно же, сохраняется. Каждый посетитель, вошедший на сайт, обязательно должен с него выйти, чтобы освободить системные ресурсы серверного компьютера для других посетителей. Чтобы выйти с сайта, посетитель обычно должен щелкнуть специальную гиперссылку; реже используется особая страница выхода с сайта.
7. Разумеется, полностью общедоступные сайты типа поисковых машин не предусматривают разграничение доступа.
Осталось теперь ввести один термин. Давайте назовем процесс "общения" посетителя с Web-сайтом, начиная от входа на главную страницу и заканчивая "уходом" с него, сессией. В дальнейшем мы будем часто пользоваться этим термином, так что не забывайте его.
Вот теперь, кажется, все. Можно приступать к созданию нашего первого интерактивного Web-сайта. Пусть это будет библиотека различных афоризмов, умных, глупых или нейтральных. Причем доступна эта библиотека будет только после регистрации, т. е. она будет поддерживать разграничение доступа. Сами данные библиотеки будут храниться в базе данных Access, a доступ к ним будет производиться через особые серверные страницы. (Такой способ общения с базой данных называется Web-интерфейсом.)
Итак, приступим...
Административные страницы сайта
Первоначально создадим набор Web-страниц, служащих для администрирования нашего сайта. В самом деле, нашу базу данных нужно сначала наполнить содержимым — кому нужна пустая библиотека. А это работа администратора, которому необходимо предоставить соответствующие инструменты.
Как администрируются Web-сайты
Как вы знаете, администратором называется человек, осуществляющий поддержку Web-сайта или какой-либо серверной программы (Web-сервера, сервера базы данных и пр.). Администратор настраивает программное обеспечение, поддерживает в порядке серверный компьютер, а в случае интерактивного Web-сайта также еще и следит за его базами данных. Очень часто администратор сайта является и его разработчиком, хотя это и не правило.
Администратор может быть один или работать в составе группы администраторов, отвечающих за различные составные части этого сайта. В последнем случае один администратор может следить за Web-сервером, другой — за базами данных, а третий — за сервером баз данных. Как правило, большие корпоративные сайты так и администрируются — один человек просто не может за всем уследить. Кроме того, большие Web-сайты разрабатываются отдельной командой Web-дизайнеров, Web-художников и Web-программистов, работающих совместно с администраторами. Сами понимаете, корпоративный сайт большой компании, такой как Microsoft, один человек просто не "потянет".
Другое дело — маленький сайт, такой как наш. Разрабатывает и поддерживает их один человек — автор, Web-дизайнер, Web-художник и Web-программист в одном лице.
Теперь поговорим о том, как администрируются интерактивные Web-сайты. Собственно, для этого могут применяться два способа, которые мы сейчас рассмотрим. Оба этих способа имеют право на существование, и выбор любого из них — дело вашего вкуса.
Первый способ заключается в том, что для работы с базой данных сайта — просмотра или изменения хранящихся в ней данных — используются сторонние программы. "Сторонние" в данном случае значит — не относящиеся к Web-серверу, т. е. Web-сервер никак не участвует в администрировании вашего сайта. Административные программы работают отдельно от него и не обращаются к нему для выполнения своих функций.
В главе 17, когда мы создавали базу данных для нашей доски объявлений, то применяли как раз такой подход. Поскольку наш сайт использовал базу данных формата Microsoft Access, то мы использовали эту самую СУБД для работы с этой базой. Web-сервер в этом никак не участвовал.
Если же вы храните данные в серверной базе, то можете пользоваться любой современной программой СУБД, умеющей "общаться" с вашим сервером данных, в том числе той же самой Access. (Впрочем, получать данные от сервера сейчас могут практически все СУБД.) Самый же простой случай — хранение данных в текстовых файлах; в этом случае вы можете воспользоваться любым текстовым редактором, например Блокнотом.
Преимущество первого способа администрирования сайта — снижение нагрузки на Web-сервер. Это преимущество особенно ощутимо, когда сайт администрируется достаточно часто. Недостаток: необходимость наличия дополнительных программ на компьютере администратора.
Второй способ администрирования сайта заключается в том, что вместо сторонних программ применяется специальный набор серверных Web-страниц. Эти страницы доступны только для администратора сайта и позволяют работать с данными, хранящимися в базе, без использования других программ. Такие Web-страницы часто называют административными.
У этого способа администрирования сайтов есть два достоинства и два недостатка. Достоинства: отсутствие нужды в сторонних программах и возможность разграничения доступа для администраторов сайта, если таких несколько. Недостатки: повышенная нагрузка на Web-сервер и необходимость создания двух разных наборов Web-страниц — административных и общего доступа.
Как уже писалось, вы можете использовать любой из этих способов. Просто взвесьте все достоинства и недостатки, предлагаемые обоими этими способами, и сделайте выбор. В принципе, ни один из них не предлагает каких-то неоспоримых достоинств, так что выбор — за вами.
Давайте выберем для нашего сайта второй способ администрирования, т. е. с использованием административных Web-страниц. Так мы сможем лучше изучить принципы построения современных интерактивных сайтов и сможем попрактиковаться в создании разных типов серверных страниц. А что до трудоемкости, то сейчас для нас важна любая практика.
Страница списка высказываний
Итак, приступим!
Давайте сначала подумаем над структурой нашей базы данных. Ведь если мы этого не сделаем, то ее (структуру) придется придумывать по ходу дела. А так никто не делает — вспомните, ведь строители перед тем, как начать строить что-либо, всегда сверяются с планом.
Пусть все высказывания, хранящиеся в нашей библиотеке, делятся на три категории: умные, глупые и нейтральные, (Возможно, потом появятся другие категории, но сейчас нам вполне хватит этих трех.) Таким образом, мы позволим посетителю нашего будущего сайта сразу же при входе выбрать то, что ему нужно, т. е. когда посетитель зайдет на наш сайт, он сразу же получит возможность выбрать на особой странице одну из категорий, после чего перейдет на другую страницу, где будут перечислены высказывания выбранной им категории.
Сейчас же мы не будем делить высказывания на категории, а выведем их в одном списке вперемешку. Не стоит слишком усложнять наш первый сайт, иначе мы толком ничему не научимся.