tanenbaum_seti_all.pages (525408), страница 195
Текст из файла (страница 195)
Он состоит из пр. вычного обрамления на НТМ1, а сам скрипт содержится внутри тега <?рлр . ?». Вся его работа заключается в создании страницы, сообщающей всю известную информацию о запустившем его браузере. Браузеры обычно отправляют кое-какие данные о себе вместе с запросами (и любыми прикладными сооЫе-файлами). Эти данные сохраняются в переменной НТТР 05ЕН А6ЕНТ. Если этот листинг сохранить в файле (ез(.РПР в веб-каталоге компании АВС1), то пользователь, набрав Е) К). впяпу.аЬсб,солт/1езт.рПР, сможет получить страницу, из которой он узнает, какие браузер, язык и операционную систему он использует.
Листинг 7.9. Пример страницы нв НТМЕ с внедренным РНР-скриптом <Псе1> <Ьобу> <П2»А я аот что про тебя знаю:<тП2» <?РПР есПо ФНПР 05Ей АЕЕНТ ?> <?Ьобу> </Псе)> РНР особенно хорошо подходит для обработки форм — с его помощью она осуществляется даже проще, чем путем написания СС1-скрипта. Пример обработки формы показан в листинге 7,10, а. Здесь мы видим обычную НТМ1-страницу с формой. Непривычно выглядит только первая строка, в которой указывается, что скрипт всбоп,рПР должен быть запущен для обработки параметров после заполнения пользователем формы и нажатия кнопки подтверждения. Форма в этом примере состоит из двух текстовых полей ввода, в одном из которых запрашивается имя клиента, а в другом — его возраст.
По окончании работы пользователя с формой на сервер отсылается стандартная строка, пример которой мы уже видели ранее. Эта строка обрабатывается, из нее извлекаются значения переменных паве и аде. Затем начинает свою работу скрипт аст(оп.рпр, показанный в листинге 7.10, б. Он генерирует ответ. Работа скрипта заключается в исполнении р(тр-команд.
Если пользователь предоставил данные «Харриет» и «24», то ему будет прислан НТМ(.-файл, код которого показан в листинге 7.10, в. Как видите, обработка форм с помощью РНР производится элементарно. Несмотря на простоту использования, РНР— это мощный язык программирования, ориентированный на предоставление интерфейса между Всемирной паутиной и серверными базами данных.
В РНР есть переменные, строки, массивы и большинство управляющих структур, присущих языку С, однако ввод-вывод гораздо мощнее, чем обычный рг1псб РНР имеет открытый исходный код ираспространяется бесплатно, Листинг 7.10. Веб-страница с формой (в); РНР*скрипт для обработки формы (б); Результат Работы РНР-скрипта при исходных данных «Харриет» и «24» соответственно (э) <Пге1> <Ьобу> <топя ась(оп-"асс)оп.рпр" пеьпоб "ровс"> 730 Глава?. Прикладной уровень <р> Введите свое иия: <тпроС Суре-"Сект" паве-"паше"> </р> <р> Введите свой возраст; <(проС Суре-"Секг" паве-"аде"> </р> <тприС Суре-"зооатС"> </таге> </бобу> </ЬСщ)> (в) «)Св!> <Ьобу> Ь1> Ответ: </П)> Привет.
<Врпр еспо Зпаюе, ?>! предсказываю; в следующем году тебе будет <?рпр есьо васе+): 2> </Ьобу> </ЬСщ)> (б) <ЬСю)> <Ьобу> <П)> Ответ; </ЬС> Привет, Харриет! Предсказываю; в следующеи году тебе будет 25 </Ьвю)> </Ьабу> (в) РНР был разработан специально под сервер Арас)те, который также обладает открытым исходным кодом и является самым распространенным веб-сервером в мире. Более подробную информацию по РНР можно найти в (т/а1аг)е, 2002).
Итак, мы знаем уже два различных способа генерации динамических НТМ1.- страниц: с помощью СО1-скриптов и внедрения РНР. Есть еще третий метод, называемый 1$Р ()ат/абегчег Радев — страницы сервера (ача). Он в целом схож с РНР и отличается только тем, что динамическая часть программируется на языке )ача.
Файлы страниц, написанных с помощью )БР, имеют одноименное расширение: .)зр. Еще один метод создания динамических страниц — АВР (АсС1чс Зегеег Радев — активные серверные страницы). Это ответ М(егозю)С на РНР и 33Р. В качестве языка динамического веб-программирования используется собственный язык написания скриптов, созданный М)сгозотС, — 'т/(зца1 Ваз(с Бог(рг. Соответственно, файлы страниц, написанных с использованием етого метода, имеют расширение .азр.
Вопрос выбора межлу РНР, )оР и АБР в основном политический (открытый код Яин против кода />з(сгозо/г). С точки зрения технологий все зти методы вполне сравнимы по возможностям. Весь набор методов создания динамических страниц иногда называют динамическим НТМЬ (1) НТМЬ). Создание динамических веб-страниц на стороне клиента Скрипты СС1, РНР, )БР и АБР решают вопросы обработки форм и взаимодействия с базами данных, расположенными на сервере. Они могут принимать входящую информацию из форм, осуществлять поиск по одной или нескольким базам Всемирная паутина (юп()п(ч) 7В< данных и в качестве результата генерировать НТМЕ-страницы. Но ни олин и н из этих методов не позволяет напрямую взаимодействовать с пользователем, нап и мер, реагировать на два кения мышкой.
Для этих целей необходимы скрипт, внедренные в НТМ(.-страницы и выполняющиеся не на серверной, а на клиен ской машине, Начиная с НТМ(. 4.0, появилась возможность включать скриптм такого типа с помощью тега <зсгч рг>. Наиболее популярный язык написания сце- нариев для клиентской стороны — это )ачаБсйрп Его мы вкратце и рассмотрим далее. Итак, ЗачаБсг!р( — это язык написания сценариев, использующий идеи, край- не отдаленно напоминающие язык программирования )ача. Но ) ачаБсг!рс — это не ) ача по определению.
Как и другие языки написания скриптов, он очен)1!)ысо- коуровневый. Так, одной строкой.)ачабспр( можно создать диалоговое окнб) вой- ти в цикл ожидания пользовательского ввода и сохранить полученную строку в переменной, Столь высокий уровень языка идеально подходит для разработки интерактивных веб-страниц. С другой стороны, тот факт, что ) ачабсйрг не стан- дартизован и мутирует быстрее, чем мушка-дрозофила в рентгеновском луче, силь- но усложняет написание платформонезависимых программ, Надо, впрочем, на- деяться, что рано или поздно этот язык дойдет до более или менее устойчивого состояния, Пример программы на (ачаБсг!р( показан в листинге 7.11.
Как и в листин- ге 7.10, а, программа создает форму с запросом имени и возраста пользователя и гениальным образом предсказывает, исходя из этих данных, каков будет возраст человека в следующем году. Тело скрипта почти такое же, как и в примере РНР. Основная разница состоит в объявлении кнопки 5иЬп)(г и определении присваи- вания в этом объявлении. Оператор присваивания сообщает браузеру о том, что в случае нажатия кнопки необходимо запустить скрипт геаропзе и передать ему форму в качестве параметра. Совершенно по-новому здесь объявляется функция геаропзе. Объявление на- ходится в заголовке НТМ1:файла, который обычно хранит информацию о заго- ловках, цвете фона и т. и. Функция извлекает из формы значение поля паве и со- храняет его в виде строки в переменной регзоп. Также извлекается значение поля аде. Оно приводится к целочисленному типу с помощью функции еча1, затем к значению добавляется 1, и результат сохраняется в уеагз.
После этого документ открывается для записи, в него записываются четыре строки (для этого исполь- зуется метод нг(те1п), и документ закрывается. Документ представляет собой НТМ1.-страницу, как видно по многочисленным тегам НТМ1., Браузер выводит готовый документ на экран. Листинг 7.11.
Применение дачеВспр(дпя обработки формы <Пгв1> <Пеаб> <асгчра 1апдиаде-"чачаасгчрг" гура-"гехт/аачаасгчра"> Гипса)оп геаропае(аеас гога) ( чаг регаоп - геаа Гоге.паве.ча1ие; чаг уеага - еча)(геаг гаге.аде.ча1ие) + ): босивепг.преп() босивеп(.нгЧГе)п("<Пав1> <Ьсбу»"); 732 Глаза 7. Прикладной уровень босчзепс.иг1Се)пГПривет, " + регвап + "1<Ьг>"); бослепс.нг)Се)пГ'предсказываю: в следующеи году тебе будет " + уеагв +"."); босцвепв.иг1Се)пГ</Ьобу> <ФСю)>"); боссщепс.с)ове(): ) <твсгтрС> <т'пеао> <Ьоау> <тога> Введите свое иив; <1приС Суре-"Сехс" паве "паве"> <р> Введите свой возраст.
<1проС Суре-"Сехс" паве-"аде"> <р> <1приС Суре-"ЬиССоп" ча)ие-"подтверждение" опс)1св-"гевропве(СП)в.тога)"> </топи> </Ьобу> <т'ЬСв) > Важно понимать, что обрабатываются программы, показанные в листингах 7.10 и 7.11, совершенно по-разному, несмотря на их внешнее сходство. Что происходит в первом случае (листинг 7.10)? После того как пользователь нажимает кнопку ЮиЬт(г, браузер собирает всю введенную информацию в одну длинную строку и отправляет ее на тот сервер, с которого пришла страница. Сервер видит имя РНР-файла и запускает его.
РНР-скрипт создает новую НТМВ-страницу, которая отсылается браузеру для отображения. Что касается второго случая (листинг 7.11), то после нажатия кнопки Лией браузер сам выполняет действия функции )атаБсг)рс, содержащейся на странице.