
《电子商务网站建设第12章汇编》由会员分享,可在线阅读,更多相关《电子商务网站建设第12章汇编(92页珍藏版)》请在文档大全上搜索。
1、第第12章章 登录和密码验证系统登录和密码验证系统12.1 系统功能与组成系统功能与组成12.2 数据库设计数据库设计12.3 实现用户登录功能实现用户登录功能12.4 实现新用户注册功能实现新用户注册功能12.5 实现密码修改功能实现密码修改功能除非除非Web应用程序对所有的访问者都提供完全应用程序对所有的访问者都提供完全相同的服务,否则,相同的服务,否则,Web应用程序一定要有用户管应用程序一定要有用户管理方面的子系统,首先要能区分出来自不同用户的理方面的子系统,首先要能区分出来自不同用户的访问,并验证用户的身份并非假冒,然后才有可能访问,并验证用户的身份并非假冒,然后才有可能对不同的用户
2、提供各自不同的个性化服务,并进行对不同的用户提供各自不同的个性化服务,并进行细致的用户权限控制。细致的用户权限控制。12.1 系统功能与组成系统功能与组成网上书店有几类用户,用户通过网上书店选择网上书店有几类用户,用户通过网上书店选择想购买的书籍,管理员利用网上书店的产品目录系想购买的书籍,管理员利用网上书店的产品目录系统来维护可选的书籍信息,当然可能还存在更多类统来维护可选的书籍信息,当然可能还存在更多类别的用户。对于每一类用户,他们在网上书店中的别的用户。对于每一类用户,他们在网上书店中的权限是不一样的,用户只能选择书籍,而不能修改权限是不一样的,用户只能选择书籍,而不能修改书籍信息;书籍
3、信息; 管理员只能维护书籍信息,而不应该管理员只能维护书籍信息,而不应该有查看和修改用户购物车和订单信息的权力。有查看和修改用户购物车和订单信息的权力。这种用户的类别是基于用户的访问权限来划分这种用户的类别是基于用户的访问权限来划分的,可以把它称为安全组的,可以把它称为安全组(security group),Dreamweaver 8把它称为授权级别(把它称为授权级别(authorization level)。)。有关用户资料和授权级别的信息存储在某个数有关用户资料和授权级别的信息存储在某个数据库表中,一般来说,为安全起见,通常由独立于据库表中,一般来说,为安全起见,通常由独立于Web应用之外
4、的其他应用形式来维护;应用之外的其他应用形式来维护; 或者由或者由Web应用中的一个独立的用户数据维护子系统来维护。应用中的一个独立的用户数据维护子系统来维护。这里假设已经存在这样一个维护用户资料和授权级这里假设已经存在这样一个维护用户资料和授权级别的工具,管理员的用户账户信息已经用这个工具别的工具,管理员的用户账户信息已经用这个工具输入到数据库中。当然,网上书店还应提供未知用输入到数据库中。当然,网上书店还应提供未知用户自助注册的功能。户自助注册的功能。通常,用户登录和密码验证系统包含一般用户通常,用户登录和密码验证系统包含一般用户注册功能、用户登录功能、用户登录失败提示、密注册功能、用户登
5、录功能、用户登录失败提示、密码和账户信息修改功能。码和账户信息修改功能。网上书店的整体数据库设计如图网上书店的整体数据库设计如图12-1所示。所示。与本章密切相关的是与本章密切相关的是Account表,该表用来存储用表,该表用来存储用户名、用户密码、授权级别和用户真实姓名。其中户名、用户密码、授权级别和用户真实姓名。其中Username: 字段类型为字段类型为“字符型字符型”,长度为,长度为20,存放内容为,存放内容为“用户名用户名”。 Password: 字段类型为字段类型为“字符型字符型”,长度为,长度为20,存放内容为存放内容为“用户密码用户密码”。 Authlevel: 字段类型为字段
6、类型为“字符型字符型”,长度为,长度为10,存放内容为存放内容为“授权级别授权级别”。12.2 数据库设计数据库设计 Name: 字段类型为字段类型为“字符型字符型”,长度为,长度为20,存放内容为存放内容为“用户的真实名字用户的真实名字”。当然,实际的网上书店的用户信息会多得多,不仅当然,实际的网上书店的用户信息会多得多,不仅仅包含这些内容,但这样的简化信息已经足够为读仅包含这些内容,但这样的简化信息已经足够为读者示例。者示例。Username是惟一的,因此可以把是惟一的,因此可以把Username定定义成主键。义成主键。图图12-1网上书店的整体数据库设计示意图网上书店的整体数据库设计示意
7、图用户登录是一个网站的应该具备的最基本的功用户登录是一个网站的应该具备的最基本的功能,其中包括用户名输入、用户密码输入、用户身能,其中包括用户名输入、用户密码输入、用户身份验证等功能。份验证等功能。Dreamweaver 8提供了【用户身份提供了【用户身份验证】的服务器行为,利用这个服务器行为能够方验证】的服务器行为,利用这个服务器行为能够方便地向结点实现【登录用户】的动态功能。便地向结点实现【登录用户】的动态功能。12.3 实现用户登录功能实现用户登录功能用户登录页面是网上书店购书系统的主页面,用户登录页面是网上书店购书系统的主页面,在书店网的主页上有指向网上书店购书系统的超链在书店网的主页
8、上有指向网上书店购书系统的超链接可指向该页面,从开发项目的模块化和可维护性接可指向该页面,从开发项目的模块化和可维护性考虑,整个网上书店购书部分的所有页面,都置于考虑,整个网上书店购书部分的所有页面,都置于本地站点的本地站点的PurchaseSys子目录下。子目录下。本节将介绍如果实现用户登录功能:本节将介绍如果实现用户登录功能: (1) 如何创建采用如何创建采用ASP技术的新页面;技术的新页面; (2) 给各种可引用的对象用统一的命名规则取名;给各种可引用的对象用统一的命名规则取名; (3) 如何使用【用户身份验证】如何使用【用户身份验证】|【登录用户】服【登录用户】服务器行为。务器行为。1
9、2.3.1 完成基本功能完成基本功能创建网站用户登录页面是每个网站首先要完成的工创建网站用户登录页面是每个网站首先要完成的工作,其操作步骤如下。作,其操作步骤如下。1. 创建用户登录页面创建用户登录页面(1) 在客户机上,启动在客户机上,启动Dreamweaver 8。(2) 选择选择Dreamweaver 8主菜单中的【文件】主菜单中的【文件】|【新【新建】命令,打开如图建】命令,打开如图12-2所示的【新建文档】对话所示的【新建文档】对话框。框。 (3) 这一次创建的是动态页面,因此在【类别】列这一次创建的是动态页面,因此在【类别】列表框中选择【动态页】选项,在右边出现的【动态表框中选择【
10、动态页】选项,在右边出现的【动态页】类型选项中,选择【页】类型选项中,选择【ASP VBScript】选项,单选项,单击【创建】按钮,就会创建一个新的支持采用击【创建】按钮,就会创建一个新的支持采用VBScript语言的语言的ASP技术的无标题文档。技术的无标题文档。图图12-2【新建文档】对话框【新建文档】对话框2. 定义购书系统的数据库连接定义购书系统的数据库连接(1) 为了支持访问为了支持访问SQL Server上的购书系统数上的购书系统数据库,在服务器端(如果服务器与开发机不分开,据库,在服务器端(如果服务器与开发机不分开,那么就是同一台机器)按那么就是同一台机器)按10.3.2节的方
11、法定义名为节的方法定义名为PurchaseSys的系统的系统DSN,将默认数据库指向购书将默认数据库指向购书系统数据库,定义结束后必须测试。系统数据库,定义结束后必须测试。 (2) 用用10.3.3节的方法在节的方法在Dreamweaver 8中定义中定义名为名为PurchaseSys的数据库连接,定义结束后必须的数据库连接,定义结束后必须测试一下。测试一下。3. 创建页面布局和页面元素创建页面布局和页面元素(1) 在客户机的新建的动态页面中,加入如图在客户机的新建的动态页面中,加入如图12-3所示的表单的基本元素。其中标题和其他静态所示的表单的基本元素。其中标题和其他静态部分都可以根据设计者
12、自己的喜好用前面各章节描部分都可以根据设计者自己的喜好用前面各章节描述的创作静态页面的方法来设计,使页面美观,可述的创作静态页面的方法来设计,使页面美观,可以自由发挥。以自由发挥。表单部分是必须要有的,将用它来生成如图表单部分是必须要有的,将用它来生成如图12-3所示动态行为。所示动态行为。添加一个表单,表单包含的元素如表添加一个表单,表单包含的元素如表12-1所示。所示。添加表单、表单元素和修改它们的属性的方法。添加表单、表单元素和修改它们的属性的方法。图图12-3带有表单元素的页面带有表单元素的页面(2) 对每个表单元素,都要定义名字,而不是对每个表单元素,都要定义名字,而不是接受接受Dr
13、eamweaver 8默认的名字,这样有助于用户默认的名字,这样有助于用户识别这些元素,因为在以后的步骤中会引用到这些识别这些元素,因为在以后的步骤中会引用到这些元素。因此建议所有元素的命名采用统一的命名规元素。因此建议所有元素的命名采用统一的命名规则,以便在大规模开发中建立文档和维护工作,例则,以便在大规模开发中建立文档和维护工作,例如此处采用的是匈牙利命名法。如此处采用的是匈牙利命名法。(3) 对用户登录页面的页面样子已经创建好了,对用户登录页面的页面样子已经创建好了,先暂缓实现其功能,选择主菜单中的【文件】先暂缓实现其功能,选择主菜单中的【文件】|【保存】命令,把这个页面保存到【保存】命
14、令,把这个页面保存到PurchaseSys子子目录下,取名为目录下,取名为index.asp。4. 创建信息提示页面创建信息提示页面接下来需要创建两个页面,一个页面是用户登录成接下来需要创建两个页面,一个页面是用户登录成功后进入的购书系统的功能页面,另一个页面是用功后进入的购书系统的功能页面,另一个页面是用户登录失败后进入的失败信息提示的页面。这两个户登录失败后进入的失败信息提示的页面。这两个页面必须在创建用户登录功能之前就创建,并保存页面必须在创建用户登录功能之前就创建,并保存在站点中。在站点中。为此目的,分别创建两个动态页面。为此目的,分别创建两个动态页面。(1) 先创建一个空页面,简单地
15、写一句话,例先创建一个空页面,简单地写一句话,例如如“这是购书系统的功能页面这是购书系统的功能页面”保存为保存为PurchaseSysmain.asp。 (2) 然后创建一个如图然后创建一个如图12-4所示的登录失败的信所示的登录失败的信息页面,保存为息页面,保存为PurchaseSysillegal.asp。图图12-4登录失败的信息页面登录失败的信息页面5. 实现用户登录的功能实现用户登录的功能(1) 回到用户登录页面的编辑窗口,如果已经回到用户登录页面的编辑窗口,如果已经关闭该窗口,那么请重新打开该文件。关闭该窗口,那么请重新打开该文件。 (2) 在【应用程序】浮动面板中,选择【服务在【
16、应用程序】浮动面板中,选择【服务器行为】选项卡,单击按钮,会出现如图器行为】选项卡,单击按钮,会出现如图12-5所示所示的菜单,选择【用户身份验证】的菜单,选择【用户身份验证】|【登录用户】命【登录用户】命令。令。(3) 接下来会弹出如图接下来会弹出如图12-6所示的【登录用户】所示的【登录用户】对话框,其参数输入方法如下:对话框,其参数输入方法如下: 在【从表单获取输入】下拉框中,选择在【从表单获取输入】下拉框中,选择frmLogin表单,表示用户登录信息从表单,表示用户登录信息从frmLogin表表单内的元素的输入中获取;单内的元素的输入中获取; 在【用户名字段】下拉框中选择【在【用户名字
17、段】下拉框中选择【txtUsername文本框】,表示用户名信息从该文本框中得到。文本框】,表示用户名信息从该文本框中得到。图图12-5【应用程序】浮动面板【应用程序】浮动面板图图12-6【登录用户】对话框【登录用户】对话框 在【密码字段】下拉框中选择【在【密码字段】下拉框中选择【txtPassword文文本框】,表示用户密码信息从该文本框中得到。本框】,表示用户密码信息从该文本框中得到。 (4) 用户登录的实际动作是将用户提交的用户用户登录的实际动作是将用户提交的用户名、密码信息与用户数据库中的用户名、密码信息名、密码信息与用户数据库中的用户名、密码信息比较。如果相同,则认为登录成功。如果不
18、同,则比较。如果相同,则认为登录成功。如果不同,则认为登录失败。接下来的对话框内容指明的是用户认为登录失败。接下来的对话框内容指明的是用户数据库的信息。数据库的信息。 在【使用连接验证】下拉框中,选择在【使用连接验证】下拉框中,选择PurchaseSys数据库连接,表示用户数据库通过该数据库连接,表示用户数据库通过该连接来访问。连接来访问。在【表格】下拉框中,选择在【表格】下拉框中,选择dbo.Account数据表,数据表,在在10.2节中介绍过,这是购书系统的用户账号信息节中介绍过,这是购书系统的用户账号信息表。表。在【用户名列】下拉框中,选择在【用户名列】下拉框中,选择Username字段
19、,字段,因为这是用户账号信息表代表用户名的字段,因为这是用户账号信息表代表用户名的字段,Web会用此字段与用户输入的用户名信息进行比较。会用此字段与用户输入的用户名信息进行比较。 在【密码列】下拉列表框中,选择在【密码列】下拉列表框中,选择Password字段,字段,因为这是用户账号信息表代表密码的字段,因为这是用户账号信息表代表密码的字段,Web应应用会用此字段与用户输入的用户密码信息比较。用会用此字段与用户输入的用户密码信息比较。 (5) 接下来的接下来的2个文本框可用于指明用户登录页个文本框可用于指明用户登录页面得到验证结果后采取的动作,可以指明登录成功面得到验证结果后采取的动作,可以指
20、明登录成功后跳转到哪个页面,登录失败后跳转到哪个页面。后跳转到哪个页面,登录失败后跳转到哪个页面。这两个页面都可以通过单击【浏览】按钮直接在本这两个页面都可以通过单击【浏览】按钮直接在本地站点中找。当未登录的用户试图访问只有登录后地站点中找。当未登录的用户试图访问只有登录后才能访问的页面,那个页面可能会引导用户到登录才能访问的页面,那个页面可能会引导用户到登录页面。在这种情况下,如果选择【转到前一个页面。在这种情况下,如果选择【转到前一个URL(如果它存在)】复选框,那么登录成功后会返回如果它存在)】复选框,那么登录成功后会返回用户试图访问的那个页面。用户试图访问的那个页面。(6) 接下来的单
21、选项指明了整个购书系统的用接下来的单选项指明了整个购书系统的用户权限控制方式。因为购书系统用访问级别来区分户权限控制方式。因为购书系统用访问级别来区分用户和管理员的权限,因此,应该选择【用户名、用户和管理员的权限,因此,应该选择【用户名、密码和访问级别】单选项来限制访问,并且在【获密码和访问级别】单选项来限制访问,并且在【获取级别自:】下拉列表框中,选择取级别自:】下拉列表框中,选择Authlevel,因为因为这是这是Account数据表中代表访问级别的字段,用户数据表中代表访问级别的字段,用户的访问级别由它决定。的访问级别由它决定。 (7) 单击【确定】按钮完成对话框的设置,回单击【确定】按
22、钮完成对话框的设置,回到到Dreamweaver 8主画面后,可以看到【应用程序】主画面后,可以看到【应用程序】浮动面板的【服务器行为】选项卡中多了【登录用浮动面板的【服务器行为】选项卡中多了【登录用户】这一行为,如图户】这一行为,如图12-7所示。所示。 图图12-7【服务器行为】选项卡【服务器行为】选项卡用户登录页面的基本功能完成后保存。用户登录页面的基本功能完成后保存。同步站点之后,测试登录功能。打开浏览器,在地址栏中同步站点之后,测试登录功能。打开浏览器,在地址栏中直接输入用户登录页面的直接输入用户登录页面的URL,例如:例如: http: /PurchaseSys/index.asp
23、。在实际的操作中把在实际的操作中把替换成当前的服务器替换成当前的服务器IP地址,地址,例:例: http: /10.10.1.2/PurchaseSys/index.asp。按回车键确定按回车键确定后,会出现如图后,会出现如图12-8所示的页面。所示的页面。在输入正确的用户名和口令后,单击【登录】按钮,在输入正确的用户名和口令后,单击【登录】按钮,会跳转到如图会跳转到如图12-9所示的页面,即前面的所示的页面,即前面的main.asp页面。页面。回到登录画面,如果输入不正确的登录信息,单击【登录】回到登录画面,如果输入不正确的登录信息,单击【登录】按钮后,会跳转到如图按钮后,会跳转到如图12-
24、10所示的画面,即所示的画面,即illegal.asp页面。页面。图图12-8用户登录页面用户登录页面图图12-9登录成功的页面提示登录成功的页面提示图图12-10登录失败的页面提示登录失败的页面提示本节中将介绍如何利用代码视图来理解本节中将介绍如何利用代码视图来理解Dreamweaver 8工具。工具。到目前为止,并没有编过一行程序,写过一行到目前为止,并没有编过一行程序,写过一行代码,一个简单的代码,一个简单的Web应用的功能已经完成了。实应用的功能已经完成了。实际上是际上是Dreamweaver 8完成了编写程序的工作。下完成了编写程序的工作。下面介绍它刚才自动完成的那些工作。面介绍它刚
25、才自动完成的那些工作。如果读者在对用户登录页面添加服务器行为的如果读者在对用户登录页面添加服务器行为的前后都按了文档工具栏中的【代码视图】按钮,来前后都按了文档工具栏中的【代码视图】按钮,来查看这个页面的查看这个页面的HTML源代码,添加源代码请参见源代码,添加源代码请参见教材教材P224-226页。页。12.3.2 Dreamweaver 8行为分析行为分析通过比较,不难发现,新的源代码多出了用通过比较,不难发现,新的源代码多出了用括起来的一大段代码,并且把表单的括起来的一大段代码,并且把表单的ACTION属性改成了属性改成了,这就是这就是Dreamweaver 8完成的主要工作。完成的主要
26、工作。用用括起来的代码都是用括起来的代码都是用VBScript编程语编程语言编写的服务器端脚本程序。现在不要求马上能够言编写的服务器端脚本程序。现在不要求马上能够看懂这些代码,但希望读者了解看懂这些代码,但希望读者了解Web应用程序开发应用程序开发的实质,最终还是要归到编写程序代码上来,只不的实质,最终还是要归到编写程序代码上来,只不过过Dreamweaver 8能够帮助开发者自动生成完成简能够帮助开发者自动生成完成简单功能的代码。单功能的代码。第第9章介绍的章介绍的ASP的的Session对象用于存储特定对象用于存储特定的用户会话所需的信息。当用户在应用程序的页之的用户会话所需的信息。当用户
27、在应用程序的页之间跳转时,存储在间跳转时,存储在 Session 对象中的变量不会丢失,对象中的变量不会丢失,而是在整个用户会话中一直存在下去。而是在整个用户会话中一直存在下去。Session对象对象所存储的所有变量,在所存储的所有变量,在Dreamweaver 8中都称作阶中都称作阶段变量。段变量。在本节中将介绍如何定义阶段变量和如何引用在本节中将介绍如何定义阶段变量和如何引用阶段变量。阶段变量。下面将利用上述代码中包含的有用信息,来引下面将利用上述代码中包含的有用信息,来引导读者把登录后进入的导读者把登录后进入的main.asp变得更加友好,并变得更加友好,并借此讲解阶段变量的应用。借此讲
28、解阶段变量的应用。12.3.3 阶段变量的应用阶段变量的应用在在Dreamweaver 8自动添加的源代码中,可以自动添加的源代码中,可以看到一句看到一句Session(MM_Username) = MM_valUsername,这是这是Dreamweaver 8让这个用让这个用户登录页面在登录成功后,自动地把用户输入的用户登录页面在登录成功后,自动地把用户输入的用户名,保存到名为户名,保存到名为MM_Username的阶段变量中,的阶段变量中,以便在用户进入网上书店的其他动态页面时,就可以便在用户进入网上书店的其他动态页面时,就可以使用这个阶段变量存储的用户名的信息。以使用这个阶段变量存储的
29、用户名的信息。用用Session(“阶段变量名阶段变量名”) = 形式的形式的VBScript语语句可以给阶段变量赋值。怎样使用这个阶段变量呢?句可以给阶段变量赋值。怎样使用这个阶段变量呢?其操作步骤如下。其操作步骤如下。(1) 在【应用程序】浮动面板中,选择【绑定】在【应用程序】浮动面板中,选择【绑定】选项卡,单击按钮,会出现如图选项卡,单击按钮,会出现如图12-11所示的菜单,所示的菜单,选择【阶段变量】命令。选择【阶段变量】命令。 图图12-11添加【阶段变量】的菜单添加【阶段变量】的菜单(2) 在出现的【阶段变量】对话框里,填入用户在出现的【阶段变量】对话框里,填入用户名对应的阶段变量
30、名名对应的阶段变量名MM_Username,如图如图12-12所所示。示。 (3) 单击【确定】按钮后,在【绑定】选项卡中单击【确定】按钮后,在【绑定】选项卡中可以看到新定义的阶段变量,如图可以看到新定义的阶段变量,如图12-13所示。所示。 这样定义之后,就可以在其他页面中使用这个阶段这样定义之后,就可以在其他页面中使用这个阶段变量了,在编辑其他动态页面时,将都可以在【绑变量了,在编辑其他动态页面时,将都可以在【绑定】选项卡中看到这个阶段变量。接下来就可以把定】选项卡中看到这个阶段变量。接下来就可以把main.asp变得更加友好,操作方法如下:变得更加友好,操作方法如下: 图图12-12【阶
31、段变量】对话框【阶段变量】对话框图图12-13新定义的阶段变量新定义的阶段变量(1) 打开打开main.asp; (2) 在页首加入一句话在页首加入一句话“您好!您好!”,然后从【绑,然后从【绑定】选项卡中找到定】选项卡中找到MM_Username阶段变量,将它阶段变量,将它拖曳到拖曳到“您好!您好!”前面,结果如图前面,结果如图12-14所示。所示。图图12-14添加阶段变量的网页添加阶段变量的网页要点提示:要点提示:在【应用程序】浮动面板的【绑定】选项卡中在【应用程序】浮动面板的【绑定】选项卡中的所有项都可以称作动态元素。对于这些动态元素的所有项都可以称作动态元素。对于这些动态元素都可以直
32、接把它们拖曳到动态页面上希望出现的位都可以直接把它们拖曳到动态页面上希望出现的位置。这样在实际访问该页面时,对应位置就会显示置。这样在实际访问该页面时,对应位置就会显示动态的内容(来自数据库或变量)。动态的内容(来自数据库或变量)。同步站点后,可以测试一下效果。正确登录后,同步站点后,可以测试一下效果。正确登录后,用户将看到亲切的问候语,如图用户将看到亲切的问候语,如图12-15所示。所示。图图12-15阶段变量的应用网页阶段变量的应用网页几乎每个网站都有新用户注册的功能,新用户按要几乎每个网站都有新用户注册的功能,新用户按要求将自己的有关信息输入后提交给服务器,由服务求将自己的有关信息输入后
33、提交给服务器,由服务器端的应用程序将这些信息添加到用户数据库中,器端的应用程序将这些信息添加到用户数据库中,通过新用户注册功能可以让用户自己生成用户账户。通过新用户注册功能可以让用户自己生成用户账户。12.4 实现新用户注册功能实现新用户注册功能在本节中将介绍如何生成添加表记录的在本节中将介绍如何生成添加表记录的Web页页面以及如何应用【插入记录】服务器行为实现新用面以及如何应用【插入记录】服务器行为实现新用户注册的功能。下面将介绍如何完成这一功能。户注册的功能。下面将介绍如何完成这一功能。先创建一个新用户注册页面,操作步骤如下。先创建一个新用户注册页面,操作步骤如下。 1. 创建新用户注册页
34、面创建新用户注册页面创建一个新的支持创建一个新的支持ASP VBScript的动态页面。的动态页面。 2. 定义购书系统的数据库连接定义购书系统的数据库连接由于同一应用可以共享数据库连接,因此这个由于同一应用可以共享数据库连接,因此这个页面仍然可以使用页面仍然可以使用PurchaseSys数据库连接,不需数据库连接,不需要另外定义数据库连接。要另外定义数据库连接。 12.4.1 插入记录的服务器行为插入记录的服务器行为3. 创建页面布局和页面元素创建页面布局和页面元素(1) 在新页面中,加入如图在新页面中,加入如图12-16所示的网页元素,所示的网页元素,其中标题和其他静态部分都可以根据自己的
35、喜好用其中标题和其他静态部分都可以根据自己的喜好用前面各章节描述的创作静态页面的方法来设计,使前面各章节描述的创作静态页面的方法来设计,使页面美观,可以自由发挥。表单部分是必须有的,页面美观,可以自由发挥。表单部分是必须有的,将用它来生成动态行为,如图将用它来生成动态行为,如图12-16所示,添加一所示,添加一个表单,表单包含的元素如表个表单,表单包含的元素如表12-2所示。所示。 表表12-2见书见书279页页图图12-16创建新用户注册页面创建新用户注册页面(2) 选择主菜单中的【文件】选择主菜单中的【文件】|【保存】命令,【保存】命令,把这个页面保存到把这个页面保存到PurchaseSy
36、s子目录下,取名为子目录下,取名为register.asp。4. 创建信息提示页面创建信息提示页面接下来创建一个页面,这个页面是注册新用户接下来创建一个页面,这个页面是注册新用户成功后进入的成功信息提示页面,为此目的,创建成功后进入的成功信息提示页面,为此目的,创建一个如图一个如图12-17所示的页面,保存为所示的页面,保存为PurchaseSysregistersuccess.asp。图图12-17注册成功的页面注册成功的页面5. 实现注册新用户功能实现注册新用户功能(1) 注册新用户,实际上是要对注册新用户,实际上是要对Account用户账用户账户数据表添加一条记录,这将用到【插入记录】服
37、户数据表添加一条记录,这将用到【插入记录】服务器行为。需要在【服务器行为】选项卡中添加一务器行为。需要在【服务器行为】选项卡中添加一个【插入记录】的服务器行为,回到个【插入记录】的服务器行为,回到register.asp页页面的编辑窗口。如果已经关闭该窗口,那么请重新面的编辑窗口。如果已经关闭该窗口,那么请重新打开该文件;打开该文件; 在【添加】菜单里选择【插入记录】在【添加】菜单里选择【插入记录】命令后,将看到如图命令后,将看到如图12-17所示的【插入记录】对所示的【插入记录】对话框。话框。图图12-18【插入记录】对话框【插入记录】对话框(2) 在对话框上半部分设置如下参数:在对话框上半
38、部分设置如下参数: 在【连接】下拉列表框里选择在【连接】下拉列表框里选择PurchaseSys数据数据库连接;库连接; 在【插入到表格】下拉列表框中选择在【插入到表格】下拉列表框中选择dbo.Account,表示要对这个数据表添加记录;表示要对这个数据表添加记录; 在【插入后,转到】文本框中输入更新以后转到在【插入后,转到】文本框中输入更新以后转到哪个页面,可以单击【浏览】按钮直接从本地站点哪个页面,可以单击【浏览】按钮直接从本地站点中选取页面。中选取页面。(3) 下半部分的选项,决定了插入记录时各个下半部分的选项,决定了插入记录时各个需要更新的字段(即需要更新的字段(即Dreamweaver
39、所说的列)的取所说的列)的取值,可按如下方法设置参数:值,可按如下方法设置参数: 在【获取值自】下拉列表框中选择在【获取值自】下拉列表框中选择frmNewUser表单,表示字段的新值来自该表单元素的输入值;表单,表示字段的新值来自该表单元素的输入值; 在【表单元素】列表框中,列出了表单的各个元在【表单元素】列表框中,列出了表单的各个元素和每个元素将更新哪一个字段,选中素和每个元素将更新哪一个字段,选中txtUsername后,在下面的【列】下拉列表框中选后,在下面的【列】下拉列表框中选择择Username,表示将插入到表示将插入到dbo.Account表中的新表中的新纪录的纪录的Passwor
40、d字段的值来自字段的值来自txtUsername的值;的值; 在【提交为】下拉框中,选择【文本】选项,在【提交为】下拉框中,选择【文本】选项,表示插入时将该值的类型理解为文本类型(使这个表示插入时将该值的类型理解为文本类型(使这个值写成类似值写成类似“2002/10/27”的日期类型值的形式);的日期类型值的形式); 类似地完成其他每个字段的对应关系。类似地完成其他每个字段的对应关系。注意:注意: 如果没有如果没有hidAuthlevel表单元素,表单元素,Authlevel字段就找不到对应的值了。字段就找不到对应的值了。(4) 单击【确定】按钮完成服务器行为定义,单击【确定】按钮完成服务器行
41、为定义,新用户注册功能便完成了,当然为了访问这一功能,新用户注册功能便完成了,当然为了访问这一功能,须先在须先在index.asp中加一个指向该页面的超链接。中加一个指向该页面的超链接。同步站点后,就可以测试一下新用户注册的功能了。同步站点后,就可以测试一下新用户注册的功能了。在用户登录页面,选择注册新用户,进入新用户注在用户登录页面,选择注册新用户,进入新用户注册页面,如图册页面,如图12-19所示。所示。图图12-19新用户注册页面新用户注册页面在输入必要的用户信息后,单击【注册】按钮后,在输入必要的用户信息后,单击【注册】按钮后,可以看到如图可以看到如图12-20所示的页面。所示的页面。
42、 如果回到登录页面时,会发现使用新的用户账户能如果回到登录页面时,会发现使用新的用户账户能成功登录。成功登录。图图12-20注册成功页面注册成功页面简单地插入记录肯定有问题,用户选择的用户简单地插入记录肯定有问题,用户选择的用户名很可能已经存在账户表中,已被别的人注册过了。名很可能已经存在账户表中,已被别的人注册过了。所以在插入记录时,应该检查输入的用户名是否已所以在插入记录时,应该检查输入的用户名是否已经存在。经存在。在本节中将介绍如何应用【用户身份验证】来在本节中将介绍如何应用【用户身份验证】来【检查新用户名】的服务器行为。【检查新用户名】的服务器行为。这些问题可通过【检查新用户名】服务器
43、行为这些问题可通过【检查新用户名】服务器行为来解决,其操作步骤如下。来解决,其操作步骤如下。12.4.2 检查新用户的服务器行为检查新用户的服务器行为1. 回到回到register.asp页面页面回到回到register.asp页面的编辑窗口,如果您已经页面的编辑窗口,如果您已经关闭该窗口,那么请重新打开该文件。关闭该窗口,那么请重新打开该文件。 2. 创建信息提示页面创建信息提示页面需要创建一个页面,这个页面是在重复注册新需要创建一个页面,这个页面是在重复注册新用户名时显示的出错提示页面。为此目的,创建一用户名时显示的出错提示页面。为此目的,创建一个如图个如图12-21所示的页面,保存为所示
44、的页面,保存为PurchaseSysregisterexist.asp。3. 实现检查用户名的功能实现检查用户名的功能图图12-21生成出错提示页面生成出错提示页面(1) 在在“应用程序应用程序”浮动面板中,选择【服务浮动面板中,选择【服务器行为】选项卡,单击按钮,选择【用户身份验证】器行为】选项卡,单击按钮,选择【用户身份验证】 | 【检查新用户名】命令,将看到如图【检查新用户名】命令,将看到如图12-22所示的所示的对话框,在【用户名字段】选择代表用户名的表单对话框,在【用户名字段】选择代表用户名的表单元素;元素; 在【如果已存在,则转到】输入框中输入在【如果已存在,则转到】输入框中输入文
45、件名,或单击【浏览】按钮直接在本地站点中选文件名,或单击【浏览】按钮直接在本地站点中选择用户名已存在的信息页面。择用户名已存在的信息页面。(2) 单击【确定】按钮,完成服务器行为定义。单击【确定】按钮,完成服务器行为定义。同步站点后,就可以测试一下效果。若输入已经存同步站点后,就可以测试一下效果。若输入已经存在的用户名,注册时,则会出现如图在的用户名,注册时,则会出现如图12-23所示的所示的信息。信息。图图12-22【检查新用户名】对话框【检查新用户名】对话框图图12-23注册时提示信息注册时提示信息一个允许新用户注册的网站,密码和账户修改一个允许新用户注册的网站,密码和账户修改便是这个网站
46、应该具备的最基本的功能。实现这个便是这个网站应该具备的最基本的功能。实现这个功能实际上就是完成对用户数据库中的信息进行修功能实际上就是完成对用户数据库中的信息进行修改。改。12.5 实现密码修改功能实现密码修改功能为了让读者了解实现密码和账户修改的功能,为了让读者了解实现密码和账户修改的功能,在本节中将介绍如何进行用户权限限制,如何筛选在本节中将介绍如何进行用户权限限制,如何筛选记录集和如何应用【更新记录】服务器行为等知识。记录集和如何应用【更新记录】服务器行为等知识。创建用户密码修改页面,创建这个页面的步骤如下。创建用户密码修改页面,创建这个页面的步骤如下。 1. 创建用户密码修改页面创建用
47、户密码修改页面先创建一个新的支持先创建一个新的支持ASP VBScript的动态页面。的动态页面。 2. 定义购书系统的数据库连接定义购书系统的数据库连接由于同一应用可以共享数据库连接,因此这个页面由于同一应用可以共享数据库连接,因此这个页面仍然可以使用仍然可以使用PurchaseSys数据库连接,不需要另数据库连接,不需要另外定义。外定义。12.5.1 筛选记录集与更新记录的服务器行为筛选记录集与更新记录的服务器行为3. 创建页面布局和页面元素创建页面布局和页面元素(1) 在新页面中,加入如图在新页面中,加入如图12-24所示的基本元所示的基本元素,其中标题和其他静态部分,都可以根据设计者素
48、,其中标题和其他静态部分,都可以根据设计者自己的喜好用前面各章节描述的创作静态页面的方自己的喜好用前面各章节描述的创作静态页面的方法来设计,使页面美观,可以自由发挥。与前一个法来设计,使页面美观,可以自由发挥。与前一个例子一样,表单部分是必须有的,将用它来生成动例子一样,表单部分是必须有的,将用它来生成动态行为,如图态行为,如图12-24所示,添加一个表单,表单包所示,添加一个表单,表单包含的元素如表含的元素如表12-3所示。所示。 表表12-3表单元素的属性和说明见书表单元素的属性和说明见书235页页图图12-24用户账户密码修改页面用户账户密码修改页面(2) 选择主菜单中的【文件】选择主菜
49、单中的【文件】|【保存】命令,【保存】命令,把这个页面保存到把这个页面保存到PurchaseSys子目录下,取名为子目录下,取名为modifyaccount.asp。由于本页面是用户登录后才能访问的,因此不由于本页面是用户登录后才能访问的,因此不需要让用户在此输入旧密码。需要让用户在此输入旧密码。4. 创建信息提示页面创建信息提示页面需要创建一个页面,这个页面是修改用户密码和账需要创建一个页面,这个页面是修改用户密码和账户成功后的信息提示页面,为此目的,创建一个如户成功后的信息提示页面,为此目的,创建一个如图图12-25所示的成功信息页面,保存为所示的成功信息页面,保存为PurchaseSys
50、modifysuccess.asp。图图12-25用户注册成功提示页面用户注册成功提示页面5. 实现修改密码和账户的功能实现修改密码和账户的功能在在modifyaccount.asp中修改用户密码,实际上中修改用户密码,实际上是要对是要对Account用户账户数据表中的某一条记录,用户账户数据表中的某一条记录,即某一个用户的信息进行更新,其中更新的仅是这即某一个用户的信息进行更新,其中更新的仅是这条记录的某些允许用户修改的字段,包括条记录的某些允许用户修改的字段,包括Password字段。字段。 为实现更新功能,必须定义对这一条用户账户为实现更新功能,必须定义对这一条用户账户记录的引用,即定义
51、一个仅含一条记录的记录集;记录的引用,即定义一个仅含一条记录的记录集; 在前面的章节中曾经介绍过基本记录集的创建,这在前面的章节中曾经介绍过基本记录集的创建,这里将介绍如何利用筛选功能。里将介绍如何利用筛选功能。 (1) 在【应用程序】浮动面板中,选择【绑定】在【应用程序】浮动面板中,选择【绑定】选项卡,单击按钮,选择【记录集】命令,可见如选项卡,单击按钮,选择【记录集】命令,可见如图图12-26所示的【记录集】对话框,其各项参数的所示的【记录集】对话框,其各项参数的输入方法如下:输入方法如下: 在【名称】文本框中输入给记录取的名字。在【名称】文本框中输入给记录取的名字。 在【连接】下拉列表框
52、中选择要使用的数据库连在【连接】下拉列表框中选择要使用的数据库连接。接。在【表格】中选取在【表格】中选取dbo.Account表。表。 在【列】选项组中选择默认的【全部】单选项。在【列】选项组中选择默认的【全部】单选项。 在【筛选】下拉列表框中选择在【筛选】下拉列表框中选择Username,表示表示条件表达式的左边是条件表达式的左边是Username字段,在右边的比字段,在右边的比较符号里选择【较符号里选择【=】,表示要进行值是否相等的比】,表示要进行值是否相等的比较,在较,在Username下方的下拉列表框中选择【阶段下方的下拉列表框中选择【阶段变量】,表示条件表达式的右边值的类型是阶段变变
53、量】,表示条件表达式的右边值的类型是阶段变量,在右边的文本框中输入代表当前用户名的阶段量,在右边的文本框中输入代表当前用户名的阶段变量名:变量名: MM_Username。这个步骤使这个步骤使Username=MM_Username成为一成为一个表达式,表示记录集包含的记录必须满足用户名个表达式,表示记录集包含的记录必须满足用户名字段等于字段等于MM_Username的值,对于这个例子来说,的值,对于这个例子来说,返回的记录集里仅包含当前用户的用户账号记录。返回的记录集里仅包含当前用户的用户账号记录。 图图12-26【记录集】对话框【记录集】对话框(2) 单击【测试】按钮,可以测试记录集定义的
54、正单击【测试】按钮,可以测试记录集定义的正确性,由于此时页面尚未运行,确性,由于此时页面尚未运行,MM_Username并并没有值,因此会弹出如图没有值,因此会弹出如图12-27所示的对话框,要所示的对话框,要求提供一个值用于测试。求提供一个值用于测试。 图图12-27【请提供一个测试值】对话框【请提供一个测试值】对话框(3) 单击【确定】按钮后,若记录集定义正确,可单击【确定】按钮后,若记录集定义正确,可以看到如图以看到如图12-28所示的页面,其中列出了记录集所示的页面,其中列出了记录集包含的记录内容。包含的记录内容。 (4) 测试完后,单击【确定】按钮完成记录集定义测试完后,单击【确定】
55、按钮完成记录集定义后,在【绑定】选项卡中可以看到如图后,在【绑定】选项卡中可以看到如图12-29所示所示的刚刚定义好的记录集。的刚刚定义好的记录集。图图12-28测试测试SQL指令指令图图12-29新定义的记录集新定义的记录集(5) 生成密码和账户修改的功能,这需要在【服务生成密码和账户修改的功能,这需要在【服务器行为】选项卡中添加一个【更新记录】,在【添器行为】选项卡中添加一个【更新记录】,在【添加】菜单里选择【更新记录】命令后,将看到如图加】菜单里选择【更新记录】命令后,将看到如图12-30 所示的【更新记录】对话框,其各项参数输所示的【更新记录】对话框,其各项参数输入方法如下:入方法如下
56、: 在【连接】下拉列表框里选择在【连接】下拉列表框里选择PurchaseSys数据数据库连接;库连接; 在【要更新的表格】下拉列表框中选择在【要更新的表格】下拉列表框中选择dbo.Account,表示要对这个数据表中的记录做更表示要对这个数据表中的记录做更新;新; 在【选取记录自】下拉列表框中选择在【选取记录自】下拉列表框中选择rstThisAccount记录集,表示要更新的记录范围由记录集,表示要更新的记录范围由这个记录集选定;这个记录集选定;图图12-30【更新记录】对话框【更新记录】对话框在【惟一键列】下拉列表框中选择在【惟一键列】下拉列表框中选择Username,因为这是一个可以惟一确
57、定一条记录的字段;因为这是一个可以惟一确定一条记录的字段; 在【在更新后,转到】文本框中输入更新以后转在【在更新后,转到】文本框中输入更新以后转到哪个页面,可以单击【浏览】按钮直接从本地站到哪个页面,可以单击【浏览】按钮直接从本地站点中选取页面。点中选取页面。 对话框下半部分的选项,决定了更新时各需更新字对话框下半部分的选项,决定了更新时各需更新字段(即段(即Dreamweaver所说的列)的取值:所说的列)的取值:在【获取值自】下拉列表框中选择在【获取值自】下拉列表框中选择frmModifyPassword表单,表示字段的新值来自该表单,表示字段的新值来自该表单元素的输入值;表单元素的输入值
58、; 在【表单元素】列表框中,列出了表单的各个元在【表单元素】列表框中,列出了表单的各个元素和每个元素将更新哪一个字段,选择好对应关系。素和每个元素将更新哪一个字段,选择好对应关系。 (6) 单击【确定】按钮,完成服务器行为定义,单击【确定】按钮,完成服务器行为定义,完成了密码和账户信息修改功能,当然,为了访问完成了密码和账户信息修改功能,当然,为了访问这一功能,须先在这一功能,须先在mainmen.asp中加一个指向修改中加一个指向修改页面的超链接。页面的超链接。同步站点后,可以测试一下密码和账户修改的同步站点后,可以测试一下密码和账户修改的功能。正常登录后,进入密码和账户修改页面,如功能。正
59、常登录后,进入密码和账户修改页面,如图图12-31所示。所示。 在输入新信息后,单击【确认修改】按钮后,在输入新信息后,单击【确认修改】按钮后,可以看到如图可以看到如图12-32所示的页面。所示的页面。如果回到登录页,会发现使用旧密码已经不能如果回到登录页,会发现使用旧密码已经不能成功登录,只有用新密码才能成功登录。成功登录,只有用新密码才能成功登录。图图12-31密码修改页面密码修改页面图图12-32用户信息修改成功页面用户信息修改成功页面本节中将介绍如何应用【用户身份验证】本节中将介绍如何应用【用户身份验证】|【限【限制对页的访问】服务器行为。制对页的访问】服务器行为。这个密码修改页面存在
60、两个问题。这个密码修改页面存在两个问题。密码修改页面存在的第一个问题是:不经过登密码修改页面存在的第一个问题是:不经过登录,仍然可以通过指定完整的录,仍然可以通过指定完整的URL来访问这个页面。来访问这个页面。这是因为对于这个页面,没有做用户权限的限制,这是因为对于这个页面,没有做用户权限的限制,但这个页面恰恰应该是用户登录后才能够访问的。但这个页面恰恰应该是用户登录后才能够访问的。那么,如何对一个动态页面加上用户权限的限制那么,如何对一个动态页面加上用户权限的限制(即只有登录后的具有一定访问级别的用户才能访(即只有登录后的具有一定访问级别的用户才能访问该页面)呢?操作步骤如下。问该页面)呢?
61、操作步骤如下。 12.5.2 限制对页的访问的服务器行为限制对页的访问的服务器行为 (1) 打开用户密码修改页面,在【应用程序】打开用户密码修改页面,在【应用程序】浮动面板的【服务器行为】选项卡中选择【添加】浮动面板的【服务器行为】选项卡中选择【添加】菜单的【用户身份验证】菜单的【用户身份验证】|【限制对页的访问】命【限制对页的访问】命令。令。(2) 如图如图12-33所示的对话框,在【基于以下所示的对话框,在【基于以下内容进行限制】单选按钮组中选中【用户名和密码】内容进行限制】单选按钮组中选中【用户名和密码】单选项,因为对密码修改页面只需要检查用户名和单选项,因为对密码修改页面只需要检查用户
62、名和密码,不需要检查访问级别,所有访问级别的用户密码,不需要检查访问级别,所有访问级别的用户都要使用该页,以后会讲解如何使用访问级别。在都要使用该页,以后会讲解如何使用访问级别。在【如果访问被拒绝,则转到】文本框中输入访问拒【如果访问被拒绝,则转到】文本框中输入访问拒绝时,进入哪个页面。可以单击【浏览】按钮直接绝时,进入哪个页面。可以单击【浏览】按钮直接在本地站点选取页面,这里选择的是登录页面。在本地站点选取页面,这里选择的是登录页面。图图12-33【限制对页的访问】对话框【限制对页的访问】对话框(3) 单击【确定】按钮完成设置。单击【确定】按钮完成设置。同步站点后进行测试。直接输入完整的同步
63、站点后进行测试。直接输入完整的URL后,用后,用户被引导到登录页面,如图户被引导到登录页面,如图12-34所示。所示。正确登录后,页面回到了刚才试图访问的正确登录后,页面回到了刚才试图访问的URL,即即用户密码修改页面,而不是通常登录后进入的用户密码修改页面,而不是通常登录后进入的main.asp。还记得生成用户登录功能时的一个选项还记得生成用户登录功能时的一个选项吗?想一想是哪个选项起了作用?吗?想一想是哪个选项起了作用?图图12-34用户登录页面用户登录页面本节介绍如何通过修改自动生成的代码来扩展本节介绍如何通过修改自动生成的代码来扩展功能。功能。密码修改页面存在的第二个问题是:密码修改页
64、面存在的第二个问题是: 虽然密码修虽然密码修改页面要求用户输入两遍密码,但是,实际上到目改页面要求用户输入两遍密码,但是,实际上到目前为止,该页面并没有利用表单中的第二个输入值,前为止,该页面并没有利用表单中的第二个输入值,并没有在更新用户账号信息时先核对两遍密码输入并没有在更新用户账号信息时先核对两遍密码输入是否一致。是否一致。这是因为这是因为Dreamweaver 8并没有专门针对用户并没有专门针对用户密码修改提供自动生成程序代码的功能,读者可以密码修改提供自动生成程序代码的功能,读者可以看到,这里用来实现密码修改功能的方法,实际上看到,这里用来实现密码修改功能的方法,实际上是借用了是借用
65、了Dreamweaver 8的【更新记录】的服务器的【更新记录】的服务器行为工具。行为工具。12.5.3 两次密码输入核对两次密码输入核对在【更新记录】无法完全满足要求的情况下,只能在【更新记录】无法完全满足要求的情况下,只能修改自动生成的程序代码,来满足开发者的要求。修改自动生成的程序代码,来满足开发者的要求。实际上不需要对自动生成的程序做大的改动,只要实际上不需要对自动生成的程序做大的改动,只要稍作变动就可以满足需要,操作步骤如下。稍作变动就可以满足需要,操作步骤如下。 (1) 将编辑窗口切换为【代码视图】模式。将编辑窗口切换为【代码视图】模式。 (2) 找到以注释找到以注释“ * Upd
66、ate Record: construct a sql update statement and execute it”为开头的为开头的代码段;代码段; 这段代码是这段代码是Dreamweaver 8自动生成自动生成用于在用户单击表单的【确认更新】按钮后,执行用于在用户单击表单的【确认更新】按钮后,执行Account表更新动作的代码。表更新动作的代码。 (3) 用以下的代码把原来的代码段包起来,形式用以下的代码把原来的代码段包起来,形式如下所示:如下所示: (4) 这样就给原有的更新动作加上了一个条这样就给原有的更新动作加上了一个条件,即表单的件,即表单的txtNewPassword和和txtConfirmPassword两个元素的输入值作为字符串两个元素的输入值作为字符串类型来比较,如果相同,就执行原来的代码段,执类型来比较,如果相同,就执行原来的代码段,执行更新动作;行更新动作; 否则,在服务器生成返回的否则,在服务器生成返回的HTML代码时,先输出代码时,先输出“两次输入的密码不符!两次输入的密码不符!”的提示的提示信息。信息。同步站点后,进行测试。在密码修改页面的两同步站点后,