Введение

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

Хотя переменные сеанса являются мощным инструментом в арсенале разработчика, Dreamweaver не создает автоматически весь код, необходимый для их работы. В данном документе рассматриваются переменные сеанса и предоставляются шаги для их использования в других моделях сервера, поддерживаемых Dreamweaver.

Необходимые требования

Для использования и понимания этого документа разработчик должен быть знаком с моделью сервера, например ASP или ColdFusion. Разработчик должен иметь представление о следующих основных понятиях. Кроме того, он должен использовать версию Dreamweaver, которая поддерживает функции динамической разработки (Dreamweaver MX или Dreamweaver MX 2004). См. соответствующие разделы руководства или справочной системы Dreamweaver для получения дополнительной информации.

  • Подготовка к построению динамических сайтов
  • Создание динамических страниц

Принцип работы переменных сеанса

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

Переменные сеанса имеет следующие особенности:

  • Если не указано иное, срок действия переменных сеанса истекает через 20 минут после того как пользователь покидает сайт.
  • Срок действия переменных сеанса истекает, если на странице не обнаружено никакой активности соответствующего пользователя на протяжении 20 минут. Он также истекает, если пользователь закрывает веб-браузер.
  • Для обеспечения работы переменных сеанса браузер пользователя должен быть настроен таким образом, чтобы пропускать файлы cookie.
  • Необходимо убедиться в том, что все страницы сайта расположены в пределах одного каталога на веб-сервере.
  • Информация, сохраненная в переменных сеанса, является уникальной для каждого пользователя. Различные пользователи не могут получить доступ к данным переменной сеанса друг друга.

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

Для всех серверных моделей, за исключением ASP.NET, Dreamweaver имеет управляемую с помощью меню функцию для записи переменных сеанса на страницу после их создания. Однако Dreamweaver не содержит управляемую с помощью меню функцию для присвоения значений переменных сеанса (данный процесс также называется инстанцированием переменных сеанса). Значения переменных сеанса необходимо присваивать вручную в составе исходного кода.

Создание переменных сеанса в приложениях ASP, ColdFusion, JSP или PHP

Примечание. Пример для ASP.NET значительно отличаются от других серверных моделей, поскольку в ASP.NET обычно используются веб-формы вместо традиционных HTML-форм. Если вы используете серверную модель ASP.NET, см. пример для ASP.NET в конце данного документа.

  1. Укажите веб-сайт JSP, ASP, ColdFusion или PHP.
  2. Создайте 3 динамических страницы на сайте. Первая страница должна содержать HTML-форму (см. в следующем шаге) для отправки данных на вторую страницу. На второй странице создайте гиперссылку, ведущую на третью страницу.

    Примечание. В данном примере используются 3 страницы, чтобы подтвердить, что переменная сеанса доступна для второй, третьей и последующих страниц. Переменные запросов, которые являются альтернативой переменным сеанса, можно переносить с первой страницы на вторую. Однако они не доступны для третьей или последующей страниц.

  3. На первой странице создайте форму, которая содержит один элемент формы в виде текстового поля, и кнопку отправки данных. Убедитесь в том, что атрибуты элемента управления формой установлены следующим образом:
    • Выделите текстовое поле и назовите его «txtFirstName» с помощью инспектора свойств.
    • Выберите тег формы (нажмите красную пунктирную линию вокруг элемента управления формой или щелкните тег формы в селекторе тегов). Настройте вторую страницу как действие формы в инспекторе свойств. Укажите метод отправки формы POST. Метод GET также часто используется с переменными сеанса, но в данном примере используется метод POST для упрощения.
  4. На второй странице запустите представление кода («Вид» > «Код»). Перед открывающим тегом <html> введите код для вашей серверной модели из приведенного ниже списка:

    Данный код получает содержимое элемента формы с именем «txtFirstName», который был создан на первой странице. Затем он создает переменную сеанса с именем «sessFirstName», значение которой устанавливается равным содержимому элемента формы. Другими словами, этот код создает переменную сеанса, которая хранит информацию о пользователе.

    • ASP (VBScript) (убедитесь, что код находится на одной строке без разрывов строк)

      <%session("sessFirstName")=Request.Form("txtFirstName")%>
    • ASP (javascript) (убедитесь, что код находится на одной строке без разрывов строк)
      <%Session("sessFirstName")=String(Request.Form("txtFirstName"))%>
    • ColdFusion
      <cfset Session.sessFirstName = #Form.txtFirstName#>

      Для использования переменных сеанса в ColdFusion также требуется создать файл Application.cfm в корневом каталоге сайта, если его там еще нет. Файл Application.cfm должен также содержать следующий код:

      <CFAPPLICATION NAME="Name" SESSIONMANAGEMENT="Yes">

      Примечание. В операционных системах UNIX имена файлов чувствительны к регистру. Убедитесь, что в имени файла Application.cfm буква A – заглавная. См. документацию по ColdFusion для получения информации о других настройках Application.cfm.
    • JSP (убедитесь, что код находится на одной строке без разрывов строк)
      <%session.setAttribute("sessFirstName", request.getParameter("txtFirstName"));%>

      Следующий код также работает, но был исключен из последних спецификаций Java:

      <%session.putValue("sessFirstName", request.getParameter("txtFirstName"));%>
    • PHP
      <?php session_start(); session_register("sessFirstName"); $sessFirstName = $HTTP_POST_VARS['txtFirstName']; ?>

      Если ошибка возникает в браузере в операционной системе Windows, это может быть связано с тем, что при установке PHP не был задан действующий каталог для сохранения информации о сеансе. Этот параметр называется session.save_path в файле PHP.ini и httpd.conf. Местоположение каталога является необязательным, но следующий параметр должен работать:

      session.save_path = c:\php\sessiondata

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

      <?php session_start();?>

      Вместо того, чтобы вызывать функцию session_start() на каждой странице, можно настроить автоматический запуск сеансов в PHP путем включения опции session.auto_start в файле php.ini. Дополнительные сведения о настройке PHP для обработки сеанса приводятся в разделе Обработка сеанса в PHP 4.
  5. На этой же странице откройте панель «Привязки», выбрав меню «Окно» > «Привязки». В меню нажмите кнопку со знаком «Плюс» (+) и выберите «Переменная сеанса». В диалоговом окне переменной сеанса введите «sessFirstName» (без кавычек) в поле имени и нажмите кнопку «ОК».
  6. Разверните значок переменной сеанса, который отображается на панели «Привязки». Перетащите значок «sessFirstName» на окно документа. Содержимое переменной сеанса запишется на соответствующую страницу.
  7. Откройте третью страницу и повторите шаги 4 и 5. Снова убедитесь, что вторая страница содержит ссылку на третью страницу.
  8. Сохраните, опубликуйте или протестируйте все 3 страницы. Если вы не получили ожидаемых результатов, проверьте регистр и орфографию элемента формы, переменной сеанса и переменной запроса. Значок сеанса должен теперь отображаться на панели «Привязки» для каждой страницы на этом сайте.

 

Создание переменных сеанса в ASP.NET

  1. Укажите веб-сайт ASP.NET.
  2. Создайте 2 страницы на сайте. Первая страница должна содержать веб-форму ASP.NET, которая публикует данные обратно в себя, а затем перенаправляет их на вторую страницу.

    Примечание. В данном примере используются 2 страницы, чтобы подтвердить, что переменная сеанса доступна для второй, третьей, четвертой и последующих страниц. Переменные запросов, которые являются альтернативой переменным сеанса, нельзя переносить из веб-формы ASP.NET на первой странице на вторую страницу.

  3. Первая страница должна содержать веб-форму ASP.NET, которая содержит один серверный элемент управления <asp:textbox> и один серверный элемент управления <asp:button>. Задайте атрибут «id» серверного элемента управления текстового поля равным «txtFirstName». Полный код для первой страницы приводится ниже. Выберите или C#, или VB, в зависимости от того, какой язык используется на вашем сайте ASP.NET:

    Данный код получает содержимое из серверного элемента управления <asp:textbox> с именем «txtFirstName» Он создает переменную сеанса с именем «sessFirstName», значение которой устанавливается равным содержимому соответствующего серверного элемента управления. Другими словами, этот код создает переменную сеанса, которая хранит информацию о пользователе.

    • ASP.NET (VB) – страница 1 <%@ Page Language="vb"%><script runat="server"> Sub Button1_Click(ByVal s As Object, ByVal e As EventArgs) Session("sessFirstName") = Request("txtFirstName") Response.Redirect("session2.aspx") End Sub</script><html><head><title>Страница 1 сеанса</title></head><body>Пример переменной сеанса и веб-формы ASP.NET в VB – страница 1<form id="Form1" method="post" runat="server"><p>first name:<asp:TextBox id="txtFirstName" runat="server" /></p><p><asp:Button id="Button1" runat="server" Text="Submit" onClick="Button1_Click" /></p></form></body></html>
    • ASP.NET (C#) - Page 1 <%@ Page Language="C#" %><script runat="server"> void Button1_Click(object sender, EventArgs e) { Session["sessFirstName"] = Request["txtFirstName"]; Response.Redirect("session2.aspx"); }</script><html><head><title>Страница 1 сеанса</title></head><body>Пример переменной сеанса и веб-формы ASP.NET в C# – страница 1<form id="Form1" method="post" runat="server"><p>first name:<asp:TextBox id="txtFirstName" runat="server" /></p><p><asp:Button id="Button1" runat="server" Text="Submit" onClick="Button1_Click" /></p></form></body></html>
  4. На второй странице запустите представление кода, выбрав «Вид» > «Код», и введите следующий код для записи содержимого переменной сеанса на соответствующую страницу. Снова выберите или C#, или VB, в зависимости от того, какой язык используется на вашем сайте ASP.NET:
    • ASP.NET (VB) – страница 2 <%@ Page Language="vb" %><html><head><title>Страница 2 сеанса</title></head><body><p>Пример переменной сеанса и веб-формы ASP.NET в VB – страница 2</p><p>first name: <%= session("sessFirstName") %></p></body></html>
    • ASP.NET (C#) – страница 2 <%@ Page Language="C#" %><html><head><title>Страница 2 сеанса</title></head><body><p>Пример переменной сеанса и веб-формы ASP.NET в C# – страница 2</p><p>first name: <%=Session["sessFirstName"]%></p></body></html>
  5. Сохраните, опубликуйте или протестируйте обе страницы. Если вы не получили ожидаемых результатов, проверьте регистр и орфографию серверных элементов управления, переменной сеанса и переменной запроса.

Дополнительная информация

Для получения дополнительной информации о переменных сеанса см. следующие статьи:

 

Эта работа лицензируется в соответствии с лицензией Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported  На посты, размещаемые в Twitter™ и Facebook, условия Creative Commons не распространяются.

Правовые уведомления   |   Политика конфиденциальности в сети Интернет