Литмир - Электронная Библиотека

Листинг 7.8. Веб-страница с формой (а); PHP-скрипт для обработки формы (б);

результат работы PHP-скрипта при исходных данных «Барбара» и «24» соответственно (в)

Компьютерные сети. 5-е издание - _403.jpg

Листинг 7.8 (продолжение)

Компьютерные сети. 5-е издание - _404.jpg

Несмотря на простоту использования, PHP — это мощный язык программирования для взаимодействия со Всемирной паутиной и серверными базами данных. В PHP есть переменные, строки, массивы и большинство управляющих структур, присущих языку С, однако ввод/вывод гораздо мощнее, чем обычныйprintf. PHP имеет открытый исходный код, распространяется бесплатно и широко используется. PHP был разработан специально для сервера Apache, который также обладает открытым исходным кодом и является самым распространенным веб-сервером в мире. Более подробную информацию по PHP можно найти в (Valade, 2009).

Итак, мы знаем уже два различных способа генерации динамических HTML-страниц: с помощью CGI-скриптов и внедрения PHP. Есть и еще несколько методов на выбор. Так, JSP (JavaServer Pages — Страницы сервера Java) в целом схож с PHP и отличается только тем, что динамическая часть программируется на языке Java. Файлы страниц, написанных с помощью JSP, имеют одноименное расширение: .jsp. ASP. NET (Active Server Pages .NET — активные серверные страницы .NET) — это ответ Microsoft на PHP и JSP. Здесь для генерации динамического контента используются программы, написанные в собственной среде разработки сетевых приложений .NET, созданной Microsoft. Соответственно, файлы страниц, написанных с использованием этого метода, имеют расширение .aspx. Вопрос выбора между этими тремя техниками в основном политический (открытый исходный код против Microsoft). С точки зрения технологий все эти методы вполне сравнимы по возможностям.

Создание динамических веб-страниц на стороне клиента

Скрипты CGI и PHP решают вопросы обработки вводимых данных и взаимодействия с базами данных, расположенными на сервере. Они могут принимать входящую информацию из форм, осуществлять поиск по одной или нескольким базам данных и в качестве результата генерировать HTML-страницы. Но ни один из этих методов не позволяет напрямую взаимодействовать с пользователем, например реагировать на движения мышкой. Для этих целей необходимы скрипты, внедренные в HTML-страницы и выполняющиеся не на серверной, а на клиентской машине. Начиная с HTML 4.0, появилась возможность включать скрипты такого типа с помощью тега <script>. Технологии, которые использовались для создания этих интерактивных вебстраниц, часто ошибочно называют динамическим HTML (dynamic HTML).

Наиболее популярный язык написания сценариев для клиентской стороны — это JavaScript. Его мы вкратце и рассмотрим ниже. Несмотря на схожесть названий, JavaScript практически не похож на язык программирования Java. Как и другие языки написания скриптов, он очень высокоуровневый. Так, одной строкой JavaScript можно создать диалоговое окно, войти в цикл ожидания пользовательского ввода и сохранить полученную строку в переменной. Столь высокий уровень языка идеально подходит для разработки интерактивных веб-страниц. С другой стороны, тот факт, что JavaScript не стандартизован и мутирует быстрее, чем мушка-дрозофила в рентгеновском луче, сильно усложняет написание программ, независимых от конкретной платформы. Надо, впрочем, надеяться, что рано или поздно этот язык дойдет до более или менее устойчивого состояния.

Пример программы на JavaScript показан в листинге 7.9. Как и в листинге 7.8, а, программа создает форму с запросом имени и возраста пользователя и гениальным образом предсказывает, исходя из этих данных, каков будет возраст человека в следующем году. Тело скрипта почти такое же, как и в примере PHP. Основная разница состоит в объявлении кнопки Подтверждение и определении присваивания в этом объявлении. Оператор присваивания сообщает браузеру о том, что в случае нажатия кнопки необходимо запустить скрипт response и передать ему форму в качестве параметра.

Совершенно по-новому здесь объявляется функция response. Объявление находится в заголовке HTML-файла, который обычно хранит информацию о заголовках, цвете фона и т. п. Функция извлекает из формы значение поля name и сохраняет его в виде строки в переменной person. Также извлекается значение поля age. Оно приводится к целочисленному типу с помощью функции eval, затем к значению добавляется 1, и результат сохраняется в years. После этого документ открывается для записи, в него записываются четыре строки (для этого используется метод writeln), и документ закрывается. Документ представляет собой HTML-страницу, как видно по многочисленным тегам HTML. Браузер выводит готовый документ на экран.

Листинг 7.9. Применение JavaScript для обработки формы

Компьютерные сети. 5-е издание - _405.jpg

Важно понимать, что, несмотря на то что PHP и JavaScript схожи в том, что они оба размещают код в файлах HTML, обработка идет совершенно разными путями. В примере PHP в листинге 7.8, после того как пользователь нажимает кнопку Подтверждение, браузер собирает всю введенную информацию в одну длинную строку и отправляет ее на сервер, в качестве запроса PHP-страницы. Сервер загружает PHP-файл и запускает PHP-скрипт, который размещен там для того, чтобы создать новую HTML-страницу, отсылаемую браузеру для отображения. Браузер не знает о том, что она была сгенерирована программой. Обработка показана как шаги 1-4 на рис. 7.13, а.

В примере JavaScript (см. листинг 7.9) после нажатия кнопки Подтверждение браузер сам выполняет действия функции JavaScript, содержащейся на странице. Вся работа производится локально, внутри браузера. С сервером никакого взаимодействия не осуществляется. Это показано как шаги 1 и 2 на рис. 7.13, б. Как следствие, результат появляется практически мгновенно, тогда как при использовании PHP задержка прибытия страницы с результатом может составлять несколько секунд.

Компьютерные сети. 5-е издание - _406.jpg

Рис. 7.13. PHP-скрипт на стороне сервера (а); сценарий на JavaScript на стороне клиента (б)

Эти отличия вовсе не означают, что JavaScript «лучше», чем PHP. Просто у них различные сферы применения. PHP (а с ним неявно и JSP, и ASP) применяется тогда, когда необходимо взаимодействовать с удаленной базой данных. JavaScript (и другие языки со стороны клиента, о которых мы поговорим, такие как VBScript) используют тогда, когда требуется взаимодействие с пользователем в пределах его компьютера. Разумеется, возможно одновременное использование PHP и JavaScript. Мы вкратце расскажем об этом.

JavaScript — это не единственный инструмент для создания веб-страниц с высокой степенью интерактивности. На платформе Windows альтернативой ему служит VBScript, базирующийся на Visual Basic. Еще один метод, который можно использовать на разных платформах, связан с использованием апплетов (applets). Это небольшие программы на Java, скомпилированные в машинные инструкции виртуального компьютера, называемого JVM (Java Virtual Machine виртуальная машина Java). Апплеты могут внедряться в HTML-страницы (между тегами <applet> и </applet>) и интерпретироваться JVM-совместимыми браузерами. Поскольку перед выполнением Java-апплеты проходят стадию интерпретации, интерпретатор может помочь избежать выполнения «нехороших действий». По крайней мере, теоретически такая возможность существует. На практике создатели апплетов обнаружили почти бесконечный поток ошибок в библиотеках ввода/вывода Java.

Ответ корпорации Microsoft на Java-апплеты фирмы Sun состоял в подключении к веб-страницам управляющих элементов ActiveX (ActiveX controls) — программ, скомпилированных для машинного языка процессора х86 и выполняемых на аппаратном уровне. Это свойство делает их значительно более быстрыми и гибкими, нежели интерпретируемые Java-апплеты, поскольку они могут делать все то же самое, что и обычная программа. Когда Internet Explorer видит на странице управляющий элемент ActiveX, он загружает его, идентифицирует и исполняет. Однако загрузка инородных программ может породить проблемы защиты информации, к которым мы обратимся в главе 8.

238
{"b":"639789","o":1}