【asp源码栏目提醒】:网学会员鉴于大家对asp源码十分关注,论文会员在此为大家搜集整理了“Dreamweaver+ASP__第9_章_用户注册和登入验证 - 网页设计”一文,供大家参考学习
第9章 用户注册和登入验证 一个交互性较好的网站用户登入验证功能是不可或缺的。
实现了这个功能,可以很容易做到对特殊频道的权限控制。
例如在一些提供影视服务的网站中,用于确定某些收费频道。
用户注册和登入验证的整个过程并不复杂,其原理也很容易理解。
借助程序将浏览者输入的帐号和密码与数据库中存储的资料进行核对。
如若数据库中存在此用户的资料就通过,否则被拒绝。
9.1 用户资料库的设计 了解了用户注册和登入验证机制的原理,就应该明确创建一个用户资料库是必须的。
下面就具体来介绍整个用户资料库(Access 数据库)的设计流程。
(1)单击【开始】【程序】【Microsoft Office】【Microsoft Office Access 2003】命令,打开【Microsoft Access】窗口。
(2)单击【新建文件】【空数据库】命令,弹出【文件新建数据库】对话框。
可以根据实际情况,保存到相应位置。
并在【文件名】文本框中输入数据库文件名,例如“user.mdb”,如图 9.1 所示。
图 9.1 【文件新建数据库】对话框 (3)单击【创建】按钮,弹出【user:数据库(Access 2000 文件格式)】窗口,如图 9.2 所示。
170 图 9.2 【user:数据库(Access 2000 文件格式)】窗口 (4)单击【使用设计器创建表】按钮,弹出【表 1:表】设计窗口。
单击【文件】【保存】命令,把表进行重新命名,例如“tb_user”。
(5)在【tb_user:表】设计窗口中按照表 9.1 所示定义所有字段信息。
表 9.1 【tb_user:表】所有字段信息 字段名称 数据类型 说明 id 自动编号 用户记录编号 name 文本 用户帐号 pswd 文本 用户口令 dt 日期/时间 注册日期 (6)选择“dt”字段,在【默认值】文本框中输入“now”。
目的是把当前时间做为记录新增时,“dt”字段的默认值,如图 9.3 所示。
(7)右击“id”字段,选择【主键】命令,为表设置主键,如图 9.4 所示。
图 9.3 “dt”字段的默认值设置 图 9.4 为表设置主键 (8)单击窗口右上角的【关闭】按钮,系统会提示保存所做的修改。
返回到【user:数据库(Access2000 文件格式)】窗口,会发现所设计的表“tb_user”已经存在于当中,如图 9.5 所示。
(9)在实际操作中,可以双击打开“tb_user”表记录管理窗口。
在这个窗口中,可以选择录入、编辑或者删除一些记录信息,如图 9.6 所示。
171 图 9.5 【user:数据库(Access 2000 文件格式)】窗口 图 9.6 “tb_user”表记录管理窗口 (10)打开 Dreamweaver 的设计界面。
单击【文件】【新建】命令,新建一个标准
ASP 文件。
(11)单击【窗口】【数据库】命令,弹出【应用程序】面板,如图 9.7 所示。
(12)单击【+】【自定义连接字符串】命令,弹出【自定义连接字符串】对话框。
在【连接名称】文 本 框 中 输 入 “ conn ” 。
在 【 连 接 字 符 串 】 文 本 框 中 输 入 “ DriverMicrosoft Access Driver.mdbDBQi:sitedatauser.mdb”。
选中【Dreamweaver 应连接】选项组下的【使用此计算机的驱动程序】选项,如图 9.8 所示。
图 9.7 【应用程序】面板 图 9.8 【自定义连接字符串】对话框 (13)单击【测试】按钮,如果连接创建成功,将弹出如图 9.9 所示的对话框。
(14)单击【确定】按钮,关闭【自定义连接字符串】对话框。
返回【应用程序】面板,向导将自动在其下拉列表中添加一条【conn】的列表选项,如图 9.10 所示。
172 图 9.9 连接创建成功提示 图 9.10 【应用程序】面板 (15)单击【窗口】【文件】命令,弹出【文件】窗口。
将看到在站点目录下会自动创建一个名为“Connections”的文件夹。
在其下将会新增一个名为“conn.
asp”的文件,如图 9.11 所示。
图 9.11 【文件】列表面板 9.2 用户注册信息分页显示功能 当需要显示的信息较多时,如果在同一页显示,将会造成页面提及太大,造成用户长时间等待。
通常,对于信息较多时,都使用分页显示技术,每页只显示指定的记录数目。
这样,既降低了数据的传输量,也方便用户浏览数据。
本节将讲解如何分页显示用户注册信息。
9.2.1 用户注册信息分页列表 list.
asp 分页列表设计比较简单,难点在于频繁进行数据绑定。
具体操作步骤如下。
(1)打开 Dreamweaver 的设计界面。
单击【文件】【新建】命令,新建一个名为“list.
asp”的标准
ASP 文件。
(2)单击 Dreamweaver【插入】工具栏中【常用】【表格】命令。
在弹出的【表格】对话框中进行相应设置,在【文档】窗口中插入了一些表格用于定位。
(3)根据实际情况,可以对特定的单元格进行宽度和背景图片的指定,来修饰表格的外观。
在此基础上,再对单元格行适当的排版,录入相应的文字信息具体效果如图 9.12 所示。
173 图 9.12 用户注册信息分页列表页面排版 (4)单击【窗口】【绑定】命令,弹出【应用程序】面板,如图 9.13 所示。
(5)单击【+】【记录集(查询)】命令,弹出【记录集】对话框。
在【名称】文本框中输入“rs”。
在【连接】下拉列表中选择【conn】选项。
【表格】下拉列表中选择【tb_user】选项。
然后单击在其右侧的【select】按钮。
Dreamweave 自动将会在【SQL】文本框中输入“SELECT FROM tb_user”,如图 9.14 所示。
图 9.13 【绑定】命令 图 9.14 【记录集】对话框 (6)单击【测试】按钮,如果记录集创建成功,将弹出如图 9.15 所示的对话框。
(7)单击【确定】按钮,关闭【记录集】对话框。
返回【应用程序】面板,向导将自动在其下拉列表中添加一条【rs】的列表选项,如图 9.16 所示。
174 图 9.15 记录集创建测试 图 9.16 【应用程序】面板 (8)在显示“编号”所对应的表格单元格中单击鼠标。
在【应用程序】面板中选中【记录集(rs)】【id】选项。
单击【插入】按钮,把“id”字段插入到单元格中,如图 9.17 所示。
图 9.17 插入记录集字段 (9)用上述同样的的方法,在各个字段对应的单元格中插入记录集字段。
其中包括“用户帐号”、“登入口令”、“注册时间”,如图 9.18 所示。
175 图 9.18 插入所有记录集字段 (10)单击【窗口】【服务器行为】命令,弹出【应用程序】面板,如图 9.19 所示。
(11)直接通过鼠标或者借助【标签选择器】选中表格内用于显示数据的所有单元格,如图 9.20所示。
(12)单击【+】【重复区域】命令,弹出【重复区域】对话框。
在【记录集】下拉列表中选择【rs】选项。
在【显示】选项组文本框中输入“2”,如图 9.21 所示。
图 9.19 【应用程序】面板 图 9.20 标签选择器 图 9.21 【重复区域】对话框 (13) 【确定】 单击 按钮,关闭对话框。
启动 Internet Explorer,在地址栏中输入“http://localhost/list.
asp”。
将会看到如图 9.22 所示的效果。
176 图 9.22 查看 http://localhost/list.
asp (14)把鼠标定位到用于放置分页信息的区域。
单击【插入】【应用程序对象】【显示记录记数】【记录集导航状态】命令,弹出【Recordset Navigation States】对话框。
在【Recordset】下拉列表中选择【rs】选项,如图 9.23 所示。
图 9.23 【Recordset Navigation States】对话框 (15)单击【确定】按钮,关闭对话框。
Dreamweave 将在文档窗口中自动插入一排用于记录统计的信息,如图 9.24 所示。
图 9.24 插入记录集导航状态 (16)把鼠标定位到用于放置分页控制的按钮区域。
单击【插入】【应用程序对象】【记录集分 177页】【记录集导航条】命令,弹出【记录集导航条】对话框。
在【记录集】下拉列表中选择【rs】选项。
在【显示方式】选项组中选中【文本】选项,如图 9.25 所示。
图 9.25 【记录集导航条】对话框 (17)单击【确定】按钮,关闭对话框。
Dreamweave 将在文档窗口中自动插入一排用于翻页控制的导航条,如图 9.26 所示。
图 9.26 插入记录集导航条9.2.2 测试用户注册信息分页显示功能 启动 Internet Explorer,在地址栏中输入“http://localhost/list.
asp”。
将会看到如图 9.27 所示的效果。
178 图 9.27 查看“http://localhost/list.
asp”9.2.3 生成代码分析——用户注册信息分页列表页面(list.
asp) 用户注册信息分页列表页面(list.
asp),完整代码如下: ltLANGUAGEquotVBSCRIPTquot CODEPAGEquot936quotgt lt--include filequotConnections/conn.aspquot --gt lt--包含数据库链接文件--gt lt Dim rs 定义记录集变量 Dim rs_numRows 定义记录当前记录位置的变量 Set rs Server.CreateObjectquotADODB.Recordsetquot 建立记录集对象 rs.ActiveConnection MM_conn_STRING 指定数据库链接字符串 rs.Source quotSELECT FROM tb_userquot 构建 SQL 语句 rs.CursorType 0 rs.CursorLocation 2 rs.LockType 1 rs.Open 获取记录 rs_numRows 0 gt lt Dim Repeat1__numRows 定义显示记录的总数目变量 Dim Repeat1__index 定义显示记录的数目变量 Repeat1__numRows 3 设定本次显示三个记录 Repeat1__index 0 rs_numRows rs_numRows Repeat1__numRows gt lt Recordset Stats Move To Record and Go To Record: declare stats variables Dim rs_total 定义记录总数变量 Dim rs_first 定义初始行变量 Dim rs_last 定义结束行变量 rs_total rs.RecordCount 获取记录集总数 以下代码设置当前页显示记录的行数。
If rs_numRows lt 0 Then 如果记录行数小于 0 179 rs_numRows rs_total 获取记录总数Elseif rs_numRows 0 Then 如果记录行数等于 0 rs_numRows 1 设定记录行数为 1End If以下代码计算当前页显示记录的开始行和结束行数值。
rs_first 1 设置开始行为 1rs_last rs_first rs_numRows - 1 计算结束行If rs_total ltgt -1 Then 如果记录集总数正确 If rs_first gt rs_total Then 如果开始行数大于记录总数 rs_first rs_total 设置开始行为最后一行 End If If rs_last gt rs_total Then 如果结束行数大于记录总数 rs_last rs_total 设置结束行为最后一行 End If If rs_numRows gt rs_total Then 如果当前记录行数大于记录总数 rs_numRows rs_total 设置为当前记录为最后一行 End IfEnd Ifgtlt如果获取的记录总数不正确,则采用循环的方式,重新计算记录的总数。
If rs_total -1 Then 如果获取的记录总数为-1 rs_total0 设置记录总数为 0 While Not rs.EOF 依次循环访问每个记录 rs_total rs_total 1 记录总数加 1 rs.MoveNext 访问下一个记录 Wend If rs.CursorType gt 0 Then rs.MoveFirst 访问第一个记录 Else rs.Requery 重新查询 End IfIf rs_numRows gt rs_total Then 如果当前记录行数大于记录总数 rs_numRows rs_total End If rs_first 1 设置开始行为 1 rs_last rs_first rs_numRows - 1 计算结束行 If rs_first gt rs_total Then 如果开始行大于记录总数 rs_first rs_total End If If rs_last gt rs_total Then 如果结束行数大约记录总数 rs_last rs_total End IfEnd IfgtltDim MM_paramNamegtlt180 Move To Record and Go To Record: declare variables Dim MM_rs Dim MM_rsCount Dim MM_size Dim MM_uniqueCol Dim MM_offset Dim MM_atTotal Dim MM_paramIsDefined Dim MM_param Dim MM_index Set MM_rs rs 获取记录集 MM_rsCount rs_total 获取记录总数 MM_size rs_numRows 获取记录行数 MM_uniqueCol quotquot MM_paramName quotquot MM_offset 0 MM_atTotal false MM_paramIsDefined false If MM_paramName ltgt quotquot Then MM_paramIsDefined Request.QueryStringMM_paramName ltgt quotquot End If gt lt Move To Record: handle index or offset parameter if Not MM_paramIsDefined And MM_rsCount ltgt 0 then use index parameter if defined otherwise use offset parameter MM_param Request.QueryStringquotindexquot If MM_param quotquot Then MM_param Request.QueryStringquotoffsetquot End If If MM_param ltgt quotquot Then MM_offset IntMM_param End If if we have a record count check if we are past the end of the recordset If MM_rsCount ltgt -1 Then If MM_offset gt MM_rsCount Or MM_offset -1 Then past end or move last If MM_rsCount Mod MM_size gt 0 Then last page not a full repeat region MM_offset MM_rsCount - MM_rsCount Mod MM_size Else MM_offset MM_rsCount - MM_size End If End If End If move the cursor to the selected record MM_index 0 While Not MM_rs.EOF And MM_index lt MM_offset Or MM_offset -1 MM_rs.MoveNext 访问下一个记录 MM_index MM_index 1 Wend If MM_rs.EOF Then 181 MM_offset MM_index set MM_offset to the last possible record End IfEnd Ifgtlt Move To Record: if we dont know the record count check the display rangeIf MM_rsCount -1 Then walk to the end of the display range for this page MM_index MM_offset While Not MM_rs.EOF And MM_size lt 0 Or MM_index lt MM_offset MM_size MM_rs.MoveNext 访问下一个记录 MM_index MM_index 1 Wend if we walked off the end of the recordset set MM_rsCount and MM_size If MM_rs.EOF Then MM_rsCount MM_index If MM_size lt 0 Or MM_size gt MM_rsCount Then MM_size MM_rsCount End If End If if we walked off the end set the offset based on page size If MM_rs.EOF And Not MM_paramIsDefined Then If MM_offset gt MM_rsCount - MM_size Or MM_offset -1 Then If MM_rsCount Mod MM_size gt 0 Then MM_offset MM_rsCount - MM_rsCount Mod MM_size Else MM_offset MM_rsCount - MM_size End If End If End If reset the cursor to the beginning If MM_rs.CursorType gt 0 Then MM_rs.MoveFirst 访问第一个记录 Else MM_rs.Requery 重新查询 End If move the cursor to the selected record MM_index 0 While Not MM_rs.EOF And MM_index lt MM_offset MM_rs.MoveNext 访问下一个记录 MM_index MM_index 1 WendEnd Ifgtlt Move To Record: update recordset stats set the first and last displayed recordrs_first MM_offset 1rs_last MM_offset MM_sizeIf MM_rsCount ltgt -1 Then182 If rs_first gt MM_rsCount Then rs_first MM_rsCount End If If rs_last gt MM_rsCount Then rs_last MM_rsCount End If End If set the boolean used by hide region to check if we are on the last record MM_atTotal MM_rsCount ltgt -1 And MM_offset MM_size gt MM_rsCount gt lt Go To Record and Move To Record: create strings for maintaining URL and Form parameters Dim MM_keepNone Dim MM_keepURL Dim MM_keepForm Dim MM_keepBoth Dim MM_removeList Dim MM_item Dim MM_nextItem create the list of parameters which should not be maintained MM_removeList quotampindexquot If MM_paramName ltgt quotquot Then MM_removeList MM_removeList amp quotampquot amp MM_paramName amp quotquot End If MM_keepURLquotquot MM_keepFormquotquot MM_keepBothquotquot MM_keepNonequotquot add the URL parameters to the MM_keepURL s.
上一篇:
在 ASP NET MVC 中创建自定义 HtmlHelper
下一篇:
bc80e7a0-d1f2-4595-b21d-01a76798e87a