在 Dreamweaver 中创建会话变量

上次更新日期: 2023年6月8日

简介

在设计 Web 应用程序时,Web 开发人员有时需要访问不通过 URL 传递但会用于应用程序的变量信息。 例如,日历 Web 应用程序可能会要求访客提供他们的时区首选项。 然后,它可以在应用程序的所有页面中显示该时区的日期和时间。 会话变量可以实现此功能。

尽管会话变量是 Web 开发人员可以使用的工具集中一个功能强大的工具,但 Dreamweaver 不会自动生成使其正常工作所需的全部代码。 本文档介绍会话变量并提供在 Dreamweaver 支持的不同服务器模型中使用会话变量的步骤。

先决条件

要使用和理解本文档中的内容,开发人员需要使用服务器模型(例如 ASP 或 ColdFusion)。 开发人员需要具备以下概念方面的专业知识。 此外,他们使用的 Dreamweaver 版本必须支持动态开发(Dreamweaver MX 或 Dreamweaver MX 2004)。 请参阅 Dreamweaver 使用手册或帮助系统的相关部分以了解更多信息。

  • 准备建立动态站点
  • 制作动态页面

会话变量的工作方式

借助会话变量,开发人员可以通过设置在访客的会话期间应用程序可访问的变量来存储访客信息。

会话变量具有以下特征:

  • 除非另外指定,否则会话变量将在访客离开站点 20 分钟后过期。
  • 如果 20 分钟内未在站点上检测到特定站点访客的任何活动,则会话变量将过期。 如果访客退出 Web 浏览器,它们也会过期。
  • 为了使会话变量可以正常工作,访客的浏览器需要设置为接受 Cookie。
  • 站点的所有页面在 Web 服务器上需要位于同一目录中。
  • 存储在会话变量中信息是特定于站点访客的。 一个站点访客不能访问其他访客的会话变量信息。

通常,开发人员通过让访客在 Web 应用程序中填写表单来获取会话变量的数据。 会话变量设置为表单字段的值。 此技术文件中的示例使用表单元素中的信息来设置会话变量的值。

对于除 ASP.NET 以外的所有服务器模型,Dreamweaver 具有菜单驱动的功能,该功能会在创建会话变量后将会话变量写入页面。 但是,对于为会话变量赋值(也称为实例化会话变量),Dreamweaver 未提供菜单驱动的功能。 需要在源代码中手动为会话变量赋值。

在 ASP、ColdFusion、JSP 或 PHP 应用程序中创建会话变量

注意:由于 ASP.NET 通常使用 Web 表单而不是传统 HTML 表单,因此 ASP.NET 的示例与其他服务器模型有很大的区别。 如果您使用的是 ASP.NET 服务器模型,请参阅本文档末尾的 ASP.NET 示例

定义一个 ASP、ColdFusion、JSP 或 PHP 网站。

在站点内创建三个动态页面。 第一个页面包含一个 HTML 表单(下一步骤中有相关说明),该表单将提交到第二个页面。 在第二个页面上,创建指向第三个页面的超链接。

注意:此示例之所以使用三个页面,是为了证明会话变量可用于第二个、第三个和后续页面。 请求变量是会话变量的替代项,这类变量可以从一个页面传送到另一个页面。 但是,它们不可用于第三个或后续页面。

第一个页面上,创建一个表单,其中包含一个文本字段表单元素和一个提交按钮。 确保表单控件属性按如下方式进行设置:
  • 使用属性检查器选择文本字段并将其命名为“txtFirstName”。
  • 选择 form 标记(单击表单控件周围的红色虚线或在标记选择器中单击 form 标记)。 在属性检查器中将第二个页面设置为表单动作。 将 post 指定为表单方法。 通常还会将“get”方法用于会话变量,但为了简化起见,此示例使用 post 方法。

第二个页面上,启动代码视图(“视图”>“代码”)。 在起始 <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 为大写。有关其他 Application.cfm 设置,请参阅 ColdFusion 文档。
  • 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 错误,则可能是所安装的 PHP 没有可有效保存会话数据的目录。 此参数在 PHP.ini 文件和 httpd.conf 文件中名为 session.save_path。 目录位置为可选,但以下设置将起作用:

    session.save_path = c:\php\sessiondata

    根据 PHP 配置的不同,有时需要手动在所有与会话相关的页面上启用会话管理。 将下面这行代码放在每个页面的顶部:

    <?php session_start();?>

    可通过开启 php.ini 文件中的 session.auto_start 选项,让 PHP 自动启动会话,而不必调用每个页面上的 session_start() 函数。
仍在此页面中,通过选择“窗口”>“绑定”打开“绑定”面板。 从加号 (+) 菜单中,选择“会话变量”。 在“会话变量”对话框的名称字段中,输入“sessFirstName”(不带引号),然后单击“确定”。
展开显示在“绑定”面板中的会话变量图标。 将“sessFirstName”图标拖动到“文档”窗口中。 会话变量的内容将写入此页面。
打开第三个页面并重复步骤 4 和 5。 此外,确保第二个页面具有指向第三个页面的链接。
保存、发布并测试所有三个页面。 如果没有实现预期结果,请检查表单元素、会话变量和请求变量的大小写和拼写。 会话图标现在显示在此站点上每个页面的“绑定”面板中。

 

在 ASP.NET 中创建会话变量

定义一个 ASP.NET 网站。

在站点中创建两个页面。 第一个页面包含一个 ASP.NET Web 表单,该表单向自身回发,然后重定向到第二个页面。

注意:此示例之所以使用两个页面,是为了证明会话变量可用于第二个、第三个、第四个和后续页面。 请求变量是会话变量的替代项,这类变量无法从一个页面上的 ASP.NET Web 表单传送到另一个页面

第一个页面必须包含一个 ASP.NET Web 表单,该表单包含一个 <asp:textbox> 服务器控件和一个 <asp:button> 服务器控件。 将文本框控件的“id”属性设置为“txtFirstName”。 下面提供了第一个页面的完整代码。 根据您为 ASP.NET 站点选择的语言,选择 C# 或 VB。

此代码从名为“txtFirstName”的 <asp:textbox> 服务器控件提取内容。 它将创建名为“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>Session Page 1</title></head><body> ASP.NET VB session variable and web form example - page 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#) - 第 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>Session Page 1</title></head><body> ASP.NET C# session variable and web form example - page 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# 或 VB。
  • ASP.NET (VB) - 第 2 页 <%@ Page Language="vb" %><html><head><title>Session Page 2</title></head><body><p>ASP.NET VB session variable and web form example - page 2</p><p>first name: <%= session("sessFirstName") %></p></body></html>
  • ASP.NET (C#) - 第 2 页 <%@ Page Language="C#" %><html><head><title>Session Page 2</title></head><body><p>ASP.NET C# session variable and web form example - page 2</p><p>first name: <%=Session["sessFirstName"]%></p></body></html>
保存、发布和测试两个页面。 如果没有实现预期结果,请检查服务器控件、会话变量和请求变量的大小写和拼写。

其他信息

有关会话变量的更多详细信息,请参阅以下文章: