
第6章网页的登录与注册的实现 本章介绍了用户数哲库的建立,用户登浓、注册功能的实现方法,动态网贞与数据库之 间数据连授数传递的议计技巧, 6.1用户数据库的设计 用户数据库体存注明用户的基本信息,比如登录名、密码,姓名、性别、惠箱、电话等 信息。我们在设计库结构时知注意,有几个字段为修填字段,如静录名,密到、娃名、性别 等(在网页上以星号标注)。为方便建库,可以利用大家熟考的0CESS建立用户数新表。 6,2注册功能的实现 用户在首次使用某个系銑时司要注册,即登录注月页而填入基本信丛,服务器骑相应的 表单处理程序检查数岩的可靠性,将符合安求的数据写入川户数据库中,功能流程图如阁6.1 所示。 在编写表单处理程序中有几个关键点需要大家注意: (1)注册密码的一汝性。注毋时要求用户二次确认密码,当两次密码不一致时,要求用 户重新输入。 if trin(request("pussword2 ))<>trin(request (passwordl))then resp0se.ite“两次输入的密码不一致!1” response..rlte(请(B href='javascript:vindow.history,bgck0:'>返目f新注期 (/a>) respoase.end end if (2)与数据库的连接及注北用户的查询 set conn"server.createoh ject ("ADODB.connection") set rs=server.createobject ("ADXNB.recordset") comn.pen database,gl_id,sqld(datahas0为SN,事先己建好) sa1-"Selcet Fron userinfo where usernane-'"request ("uscrnane") (3)把注册信息写入数据库中。主要是调用那©qCst对象读取注形信息。 rs.open sql,conn,1,1 if rs.eof then rs.addnew rs('usernane)=trin(request (userane)) rs("password")=trin(request (password)) rs("emil")=trin(roquest ("enail))
本章介绍了用户数据库的建立、用户登录、注册功能的实现方法,动态网页与数据库之 间数据连接及传递的设计技巧。 6.1 用户数据库的设计 用户数据库储存注册用户的基本信息,比如登录名、密码、姓名、性别、邮箱、电话等 信息。我们在设计库结构时须注意,有几个字段为必填字段,如登录名、密码、姓名、性别 等(在网页上以星号标注)。为方便建库,可以利用大家熟悉的 ACCESS 建立用户数据表。 6.2 注册功能的实现 用户在首次使用某个系统时需要注册,即登录注册页面填入基本信息,服务器端相应的 表单处理程序检查数据的可靠性,将符合要求的数据写入用户数据库中。功能流程图如图 6.1 所示。 在编写表单处理程序中有几个关键点需要大家注意: (1)注册密码的一致性。注册时要求用户二次确认密码,当两次密码不一致时,要求用 户重新输入。 if trim(request("password2"))<>trim(request("password1")) then response.write "两次输入的密码不一致!!" response.write("请返回重新注册 ") response.end end if (2)与数据库的连接及注册用户的查询 set conn=server.createobject("ADODB.connection") set rs=server.createobject("ADODB.recordset") conn.open database,sql_id,sql_pwd (database为DSN,事先已建好) sql= "Select * From userinfo where username='"+request("username")+"'" (3)把注册信息写入数据库中。主要是调用Request对象读取注册信息。 rs.open sql,conn,1,1 if rs.eof then rs.addnew rs("username")=trim(request("username")) rs("password")=trim(request("password")) rs("email")=trim(request("email"))

rs("nane")=trim(request ("nane")) rx("sex")=trim(request("sex")) rs(address")=trim(request ("address")) rs(phone")=trin(renuest ("phone")) rs("logip)"request.ServerVariables ("REMOTE_ADDK") rs("logtine")=now( rs,update rs.close 注历信息承入 接收注册信恩 注研信息符 No 合要米叫? Yes 查询注静用户 Yes 提示注斯用 是否存在 户己经祥在 No 写入注册信恩 图6.1用户注册功能实现流程图 6.3登录功能的实现 登录功能由两个文件实现,login.htnl完成账户和口令的输入,1cgin.asD将登录信息与 用户数据表中的数据进行验证,功能实现流程图如图6.2所示。 2
2 rs("name")=trim(request("name")) rs("sex")=trim(request("sex")) rs("address")=trim(request("address")) rs("phone")=trim(request("phone")) rs("logip")=request.ServerVariables("REMOTE_ADDR") rs("logtime")=now() rs.update rs.close 6.3 登录功能的实现 登录功能由两个文件实现, login.html 完成账户和口令的输入,login.asp 将登录信息与 用户数据表中的数据进行验证。功能实现流程图如图 6.2 所示。 No Yes Yes No 注册信息录入 接收注册信息 注册信息符 合要求吗? 查询注册用户 是否存在 写入注册信息 提示注册用 户已经存在 图 6.1 用户注册功能实现流程图

输入登录信息 接收登录信息 依用户名查询 No 用户存在 Yes 口令对吗 吗? o Yes 提示用户不存在 亚新程液结恩 图62用户登录功能实现流程图 对于登录表单处理程序,我们须注意以下几点: (1)在用户名或口令为空时,让用户重新登录. usernane=trim(equest(“usernane)】 password trim(request ("password")) if (username ="or (password =""then response.redirect "login.htm" (login.htm.为登录页而) end if (2)打开数据库,查询登录的用户名: Set Conn=Server.CreateObject ("ADODB.Connection") Set RS=Server.Createdh ject ("ADODB.RecordSet") conn.open datahase,sql_id,sql_pwd RS.open "select from userinfo where usernane='"userpame ""conn,2.3 (3)判断登录用户是否存在。若存在,则比较口令是否正确,若不存在,请用户重新登录。 if rs.recordcount 0 then 【s_PHSSWOF止-1rim(rs("password)(将从数据表中获得的DSSWOT字段的内容去掠空 格后赋给一个临时变量r8 password) end if if rs.recordcount "0 then rs.close conn.close re5onse.write#(“用户名"米r#quest(usee:)&”不存在,请a
3 图 6.2 用户登录功能实现流程图 对于登录表单处理程序,我们须注意以下几点: (1)在用户名或口令为空时,让用户重新登录。 username = trim(request("username")) password = trim(request("password")) if (username = "") or (password = "") then response.redirect "login.htm" (login.htm为登录页面) end if (2)打开数据库,查询登录的用户名。 Set Conn=Server.CreateObject("ADODB.Connection") Set RS=Server.CreateObject("ADODB.RecordSet") conn.open database,sql_id,sql_pwd RS.open "select * from userinfo where username='" & username & "'",conn,2,3 (3)判断登录用户是否存在。若存在,则比较口令是否正确,若不存在,请用户重新登录。 if rs.recordcount <> 0 then rs_password=trim(rs("password"))(将从数据表中获得的password字段的内容去掉空 格后赋给一个临时变量rs_password) end if if rs.recordcount = 0 then rs.close conn.close response.write("用户名"&request("username")&"不存在,请<a No Yes No Yes 接收登录信息 依用户名查询 用户存在 吗? 口令对吗 提示用户不存在 更新登录信息 输入登录信息

href-'javascript:window.history.bnck0:'>返回换名输入) rs.update rs.close conn.close (4)将用户名和口令分别赋予session(“usernane”)和session(“p阻ssword”)对象. session ("usernane")=usernane session ("password")=password 6.4注册与登录的页面实现 6.4.1注册的页面实现 利用drean忙ver中的表单元素可方便设注册页面,图G-3是简单的注册界面. 请填入个人信息 用户名甲而 密新 姓名老红 地址霜 现文 名 图6-3用户注册界面 注册成功后的信息如G-4所示。 Y四-+m 00可2公m金u⊙5,29 w、后011w YAFLO0 习头地图包上年·4度出议的巴无司 表>名1廿6及,零日 图6-用户注册成功提示界面 关于表单的制作过程在实脸6中详途,在这里有两点要注意: 《1)贞面表单与表单处理型序的连接。服务器端表单处理程序的指定,可以直接在代
4 href='javascript:window.history.back();'>返回换名输入") rs.update rs.close conn.close (4)将用户名和口令分别赋予 session(“username”)和 session(“password”)对象。 session("username")=username session("password")=password 6.4 注册与登录的页面实现 利用dreamweaver中的表单元素可方便设计注册页面, 图6-3是简单的注册界面。 图6-3 用户注册界面 注册成功后的信息如图6-4所示。 图6-4 用户注册成功提示界面 关于表单的制作过程在实验6中详述,在这里有两点要注意: (1)页面表单与表单处理程序的连接。服务器端表单处理程序的指定,可以直接在代

码中修改,巾的 ctio参数内容指定了服务器端处理表单的程序名称,也可在标签编辑器中修改,如图G-5 所示。 行星湖州浸一tm n-黑线 保表 4需 日事件 黎作st中 . 一利 住 ★ 偏记女出 for CM城E4号 E林 卡值是 发 平消 图G-5标笠编辑器 共中post方法等待服务器来读取信息,可以传送大量信息:阳t方法立刻传送数据,执行 效率较高,但可传送的信息不大于2置。我们在实验6中将采用0st方法。 (2)“提交”按钮动作类型为“提交表单”,表示按下按钮将测览器信息传送到指定的 服务器脚本程序:“重填”按们动作类型为“重设表单”,表示将启动测览器程序清除表单 信息。 6.4.2登录的顶面实现 与实现注册过程类似,用表单元素很容易实现登录过程,如图66所示。 用户登柔区 用/户名野红 帝留司 上米林 图6-6用户登承界面 登录成功后将提示“X登录成功”。 同样,中的action参数需要指定。 实验6页面登录与注册程序设计实例 在本实验中我们设计较为复杂的注册与登录程序,由于大家在第二章中学习了页面设计 5
5 码 中 修 改 , 中 的 action参数内容指定了服务器端处理表单的程序名称,也可在标签编辑器中修改,如图6-5 所示。 图6-5 标签编辑器 其中post方法等待服务器来读取信息,可以传送大量信息;get方法立刻传送数据,执行 效率较高,但可传送的信息不大于2K。我们在实验6中将采用post方法。 (2)“提交”按钮动作类型为“提交表单”,表示按下按钮将浏览器信息传送到指定的 服务器脚本程序;“重填”按钮动作类型为“重设表单”,表示将启动浏览器程序清除表单 信息。 与实现注册过程类似,用表单元素很容易实现登录过程,如图6-6所示。 图6-6 用户登录界面 登录成功后将提示“XX登录成功”。 同样,中的action参数需要指定。 实验 6 页面登录与注册程序设计实例 在本实验中我们设计较为复杂的注册与登录程序,由于大家在第二章中学习了页面设计

的相关操作,在下面的内容中者重介绍表单处理程序的编写: 一、数据库设计 利用ACCESS建立注册信息表USERINFO,如表6-1: 表6-1 Userinfo数据表结构 字段 类型 宽度 字段含义 usernane 文本型 30 登录名 password 文术型 20 登录口令 enail 文本型 60 E-ail nane 文本型 20 姓名 sex 文本型 2 性别 address 文本型 50 地址 pbone 文本型 12 电话 我门利用第四章的划识,建立数据源5N①ATAB4SE,如图5-7所示。这一数据源在后面 register.asp文件中要使用。 Ee年家 x 宽浅名) 四 质: 小园 甲消 拓库 根助的 选拌) 的. 梅发 压w0 在区A 系风的写库 无型 C和手车 n体」 选项e0》 图67进立数据源 二、注册页面的设计及表单处理程序 1。注册页面的设计 6
6 的相关操作,在下面的内容中着重介绍表单处理程序的编写。 一、 数据库设计 利用ACCESS建立注册信息表USERINFO,如表6-1: 表 6-1 Userinfo 数据表结构 字段 类型 宽度 字段含义 username 文本型 30 登录名 password 文本型 20 登录口令 email 文本型 60 E-mail name 文本型 20 姓名 sex 文本型 2 性别 address 文本型 50 地址 phone 文本型 12 电话 我们利用第四章的知识,建立数据源DSN(DATABASE),如图6-7所示。这一数据源在后面 register.asp文件中要使用。 图6-7 建立数据源 二、注册页面的设计及表单处理程序 1.注册页面的设计

可 安)以E在0入00文丰式D的C姑点)国口(0 四代码分渔t制是:州户年m i. BAB608 街沃次室鸿 无中”“”””” 联不址 其不场「 喻新指坡 常属过 相式先 体式「本 发发日 于件飘手什可 大小 ■■ ■g 甲元结 水平习宽 不横行厂 a到 数离格中可 标动 青保他■ 图G-8设计注册页面 按照图68,您可根据在第二章中所学的表单元素设计方法。设计用户注册页面,文件名 为register.htm,对应的代码如下; Khtnl> Khead> 用户注册  : 7
7 图 6-8 设计注册页面 按照图6-8,您可根据在第二章中所学的表单元素设计方法, 设计用户注册页面,文件名 为register.htm,对应的代码如下: 用户注册

(div align=“center' class="p12blue">请填写用户个人信息 (/tr> (td width-"30%” valign="middle"align="RIGHT" bgcolor=°#F0F0F0>*注册名:/tdD (tr> *密码:〈/td》 *请再次输入来码:(/tdD
8 请填写用户个人信息 *注册名: *密码: *请再次输入密码:

(/tr> (tr> 《1 d valign=*1cp> (tr> td》 性别:《/tdD 女 (input type="radio°nane="Sex”value=“男 男/td》 联系地址:(/1dD (tr> (td valign-"middle”align-“RIGHT°bgcolor--=fFoF0> 联系电话: /td》
9 *Email 地 址 : 姓 名 : 性别: 女 男 联系地址: 联系电话:

Kbr> /td> (/tr>  :  : /td》 (br> /body> 2.表单处理程序register.8s即 % adopenkeyseL=1 adlockopt imistic=3 const database="database" 10
10 /body> < 2.表单处理程序register.asp <% adopenkeyset=1 adlockoptimistic=3 const database="database