Опубликован: 24.12.2006 | Доступ: свободный | Студентов: 2671 / 212 | Оценка: 4.51 / 4.22 | Длительность: 23:31:00

Урок 5: Перемещение данных между страницами

< Урок 4 || Урок 5: 123456 || Урок 6 >

Установка и считывание файлов cookie

В предыдущих упражнениях показаны способы работы с данными, которые вводятся посетителями (получение, отправка на другую страницу и дальнейшая обработка) при помощи форм и обычных ссылок. Несмотря на различия, переменные формы и строки запроса имеют важное сходство, – после отправки данных от одной страницы к другой они удаляются из памяти протокола HTTP.

Нередко при создании веб-приложений требуется, чтобы определенные данные сохранялись и после операции обмена. Формы и строки запросов не дают такой возможности, тем не менее, существуют типы переменных, которые после операции обмена остаются в памяти. В обход ограничений, накладываемых протоколом HTTP, значения переменных сохраняются на жестком диске пользователя или на сервере, и после этого могут считываться оттуда, когда в них возникает необходимость.

Один из таких типов переменной является файл cookie. Это небольшой текстовый файл, сохраненный на жестком диске посетителя. Значения, хранящиеся в этом файле, могут считываться любым количеством страниц. Таким образом, файлы cookie позволяют поддерживать работоспособного состояния страницы, тем самым, избегая главного недостатка "протокола без состояний" HTTP.

Примечание. Многие пользователи озабочены вопросами безопасности использования файлов cookie. В большинстве случаев эта тревога безосновательна, поскольку заразить компьютер вирусом через текстовые файлы невозможно, к тому же, прочитать файл cookie можно только на веб-узле, с которого он был установлен. Однако файлы cookie остаются на жестком диске вне зависимости от того, кто именно помещает их на сайт. Таким образом, если на одном компьютере работает несколько человек, хранение данных кредитной карты в файле cookie становится опасным. Поэтому разработчикам не следует помещать в файл cookie никаких важных сведений (например, номер и пин-код кредитной карты), либо на сайте, как минимум, должна быть возможность выбора: сохранять информацию или нет.

В этом упражнении показано, как устанавливать и считывать файлы cookie. Здесь снова используется приложение формы, но на этот раз, когда введенные данные подтверждены и посетитель перенаправляется на страницу test_form_processor.asp, а имя и фамилия сохраняются в файле cookie на его жестком диске. Затем будет создана третья страница, запрашивающая эти значения (без использования переменных форм или строк запроса), на примере которой показано, что переменные firstName и lastName действительно могут сохраняться и после операции обмена данными по протоколу HTTP.

  1. Откройте файл test_form_processor.asp.

    Эта страница получает значения переменных firstName и lastName в строке запроса, после чего эти значения выводятся на страницу в составе предложения: "Thank you, {QueryString.firstName} {QueryString,lastName}, for filling out my form."

    На этот раз, значения будут использоваться не для отображения на странице а для того, чтобы сохранить их в файле cookie на жестком диске пользователя.

  2. В режиме Code (Код), при использовании ASP или ColdFusion, следует поместить курсор в конец строки кода, предшествующей открывающему тегу <html> (строка 2 в ASP и 1 в ColdFusion). Пользователям PHP необходимо поместить курсор в самое начало документа. Трижды нажмите (Enter)/(Return), чтобы добавить больше свободного места.

    Для кода потребуется свободное пространство, которое будет добавлено на следующем шаге. Интересно, что код добавляется вне документа перед элементом <html>. Серверный код часто помещается за пределы HTML-документа, что облегчает его поиск и редактирование. Важно помнить, что при пересылке итоговой страницы от сервера клиенту серверный код удаляется, так что посетители его не увидят.

    Примечание.В PHP при попытке отправить содержимое обратно браузеру в составе заголовка (и установка файлов cookie является примером этого) вы должны добавить этот сценарий перед первой строкой XHTML-кода или отобразится ошибка с сообщением "cannot add header information" ("невозможно добавить информацию о заголовке"). Для решения этой проблемы следует просто поместить такое содержимое в самое начало файла.
  3. Введите участок кода, соответствующий выбранной серверной модели.

    Для ASP:

    <%
    Response.Cookies("firstName") = Request.QueryString("firstName")
    Response.Cookies("firstName").Expires = Date+30
    Response.Cookies("lastName") = Request.QueryString("lastName")
    Response.Cookies("lastName").Expires = Date+30
    %>

    Для ColdFusion:

    <cfcookie name="firstName" expires="never" value="#url.firstName#">
    <cfcookie name="lastName" expires="never" value="#url.lastName#">

    Для PHP:

    <?php
    setcookie('firstName', $_GET['firstName'], time() + (60*60*24));
    setcookie('lastName', $_GET['lastName'], time() + (60*60*24));
    ?>

    Прежде чем анализировать введенный код, следует заметить, что в Dreamweaver не существует способа создать файл cookie при помощи визуальных элементов интерфейса, так что следует писать код вручную. Dreamweaver помогает при разработке динамичных веб-сайтов, но для полноценной разработки требуется обращаться и к ручному кодированию.

    Хотя синтаксис кода ASP, ColdFusion и PHP явно отличается, все три участка работают одинаково. Они создают две новые переменные firstName и lastName для файла cookie. Снова переменные, относящиеся к разным типам, названы одним и тем же именем ( QueryString.firstName и Cookies.firstName и такая же пара для переменной lastName ), но разные области видимости предотвращают конфликтные ситуации. В коде задан срок действия переменной (30 дней – для ASP, неограниченно – для ColdFusion и один день – для PHP). Наконец, во всех трех участках в качестве значений новых переменных файла cookie указываются текущие значения переменных строки запроса QueryString.firstName и QueryString.lastName.

    Другими словами, значения новых переменных файла cookie задаются динамически. Это позволяет не только присвоить переменным жесткие статические значения, например, Cat или Dog, но и создавать переменные, в которых будет храниться содержимое, полученное из других переменных. В данном случае переменным динамически присваивается содержимое переменных строки запроса.

< Урок 4 || Урок 5: 123456 || Урок 6 >