Анимация
JavaScript
|
Главная Библионтека 2. Есть ли различие для программиста между методами POST и GET при использовании модуля CGI? а) нет; б) да. 3. Обеспечивает ли безопасность поле ввода пароля в HTML-форме (пароль пересылается в скрытом виде)? а) нет; б) да. Ответы 1. Правильный ответ - вариант в). Функция без аргументов возвращает список имен элементов формы, переданной 2. Правильным будет вариант а). Никаких отличий нет. 3. Правильный ответ - вариант а). Пет. При иснользовании обычных протоколов HTTP и CG1 все поля формы пересылаются в открытом текстовом виде. Поле ввода пароля лишь скрывает вводимый текст при наборе. Упражнения " Усовершенствуйте ограмму службы технической поддержки. Добавьте в файл журнала информацию о времени записи каждой записи и красиво оформите вывод. Функция display(} выводит все записи в порядке их записи в файл журнала, начиная с самых старых. Измените эту функцию таким образом, чтобы вначале выводились самые свежие записи. 19-й час Сложные формы В Web встречаются не только простые аничные формы. Иногда форма может занимать сразу несколько страниц. Подобные варианты сложных форм часто используются в Web-приложениях, предназначенных для проведения опросов пользователей, электронной коммерции, справочных систем и т.д. Для создания таких более сложных форм потребуется применение самых разных методов программирования, о которых и пойдет речь на этом занятии. Итак, основная тема этого занятия - создание многостраничных форм. Web-сервер "лишен памяти" Обработка сложных многостраничных форм :с помощью Офамм- представляет собой уникальную задачу программирования. Связь между Web-броузером и Web-сервером достаточно кратковременна. Web-броузер подключается к серверу, считывает страницу, а затем отключается от него. Ни о какой поддержке долговременного соединения между сервером и броузером говорить не приходится. Таким образом, при каждом следующем подключении Web-сервер не в состоянии распознать броузер в качестве абонента предьщущего сеанса связи. У сервера нет простого механизма запоминания подключающихся к нему броузеров. Аналогией этой ситуации может служить разговор между посетителем библиотеки и библиотекарем, который лишен памяти, и посетителю во время визита разрешается задать только один вопрос. Посетитель может заказать у библиотекаря книгу (скажем, об Аризоне), и библиотекарь, вполне вероятно, выполнит этот заказ, поскольку поиск одной книги - это достаточно простая задача. Но посетитель не может заказать другую книгу по той же тематике, поскольку библиотекарь ничего не помнит о предыдущем заказе. Если новый запрос прозвучит как "Дайте, пожалуйста, другую книгу об Аризоне", то библиотекарь, скорее всего, принесет ту же книгу, которую он выдал при первом заказе. Единственный способ заказать вторую книгу по той же теме - сформулировать запрос следующим образом: "Мне нужна еще одна книга об Аризоне; у меня уже есть Заселение юго-запада". В этом запросе содержится достаточно информации для изложения сути проблемы, а также имеются сведения о том, какой вариант выполнения запроса нужно При написании многостраничных форм для Web используется тот же подход: каждый сеанс вопроса/ответа должен содержать достаточно информации, чтобы Web-сервер мог "понять", что нужно сделать и что уже сделано. Такие сеансы можно создавать различными способами, и один из них - использование скрытых HTML-полей - как раз и представлен на этом занятии. Скрытые поля Простейшие тособ заставить Web-формы запоминать данные - поместить в них информацию с предыдущей формы с помощью скрытых полей. Скрытые поля являются частью спецификации HTML-форм. Они позволяют создавать поля, содержащие значения, которые являются частью HTML-формы, но при этом не отображаются в самой форме. На языке HTML они записываются следующим образом: <IHPUT type="hidden" name=fullname- value="Pink Floy"> Если приведенный выше HTML-оператор поместить в форму, то новое имя ("fuUnaroe") и значение ("Ипк Floyd") станут частью этой формы. При передаче данных формы CGI-профамме, написанной на языке Perl, название скрытого поля и его значение можно будет определить с помощью функции param. Электронный магазин В качестве примера использования скрытых полей рассмотрим электронный магазин, состоящий из набора Web-страниц и позволяющий делать покупки путем выбора элементов из электронного каталога. Пока же я просто покажу, как работает сложная форма, ,а ниже представлю другую сложную форму вместе с текстом программы создания формы для сбора информации. Не следует использовать пример рассматриваемого нами электронного магазина без реализации механизма безопасной Web-транзакции, о котором пойдет речь на 20-м занятии, "Работа с HTML-кодом и CGl-профаммами". Обратите внимание, что в этом примере мы не обрабатываем никакие персональные данные, типа номера телефона или кредитной карточки, поскольку скрытые поля подобны обычным полям HTML-формы. Здесь вообще нет и речи о какой бы то ни было безопасности. Первая страница электронного магазина фис. 19.1) содержит список особо рекламируемых товаров. После того как пользователь щелкнет на кнопке Вход в магазин, CGI-программе будут переданы данные формы. В ответ на это СО]-профамма выведет полный каталог, показанный на рис. 19.2. Вторая страница представляет собой полный каталог товаров электронного магазина. После передачи данных первой страницы (с рекламируемыми товарами) CGI-программе последняя выведет новую форму с полным каталогом товаров. Кроме того, выбранные ранее товары будут помещены в эту же форму в виде скрытых полей. Нри каждом получении СО I-программой значений из HTML-формы новая страница будет содержать старые значения в скрытых полях, а новые - в виде обычных элементов. При такой организации взаимодействия с сервером можно избежать проблемы "забывчивого библиотекаря". При передаче серверу полного каталога, помимо сообщения о выборе элементов в текущей форме, скрытые поля "напоминают" CGI-программе о том, какие элементы были выбраны из первой формы. Если необходима и третья страница, то в ней могут присутствовать значения из первых двух страниц, опять-таки в виде скрытых полей, как показано на рис. 19.3. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [ 91 ] 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |