er_name ='" & session("user_name") &"'"
rs_user_name.open sql,hotel_conn,3,1
response.Write("欢迎您,"&session("user_name") &" <br>")
end if
%>
<%
set rs_user_name = Nothing
rs_user.Close()
Set rs_user = Nothing
room.Close()
Set room = Nothing
%>
2.注册登录模块
该模块分为注册和登录两个功能模块。
注册模块
图25所示用户注册页面,是由文件reg.asp来实现的。他不需要连接数据库,主要功能是收集信息并传递给reg2.asp文件进行数据有效性验证。
图25 用户注册页面
程序清单21 生成年、月、日序列reg.asp部分代码
<!-- 生成年 -->
<select name="byear" class="select_filed" id="byear" tabindex="7">
<%for i=1940 to year(date)-3%>
<option value="<%=i%>"><%=i%></option>
<%next%>
</select>年
<!-- 生成月 -->
<select name="bmonth" class="select_filed" id="bmonth" tabindex="8">
<%for i=1 to 12%>
<option value="<%=i%>"><%=i%></option>
<%next%>
</select>月
<!-- 生成日 -->
<select name="bday" class="select_filed" id="bday" tabindex="9">
<%for i=1 to 31%>
<option value="<%=i%>"><%=i%></option>
<%next%>
</select>日</div></td>
文件reg.asp接收到的信息传递给reg2.asp文件进行验证,其实现代码见程序清单22所示
<%
dim err(9)
dim name,psw,psw2,sex,byear,bmonth,bday,tel,email
dim rs_test_name,rs_user
name=request("name")
psw=request("psw")
psw2=request("psw2")
sex=request("sex")
byear=request("byear")
bmonth=request("bmonth")
bday=request("bday")
tel=request("tel")
email=request("email")
if is_name(name) then
set rs_test_name=server.CreateObject("adodb.recordset")
sql = "select * from user_reg where user_name='" & name & "'"
rs_test_name.open sql,hotel_conn,3,2
if not(rs_test_name.eof or rs_test_name.bof) then err(2)="这个用户名已经存在"
else
err(1)="用户名只能使用字母、数字和下划线"
end if
if len(name)>12 then err(3)="用户名不能超过12个字符"
if len(name)<4 then err(3)="用户名不能少于4个字符"
if psw <> psw2 then err(4)="两次输入的密码不一致"
if len(psw)>16 then err(5)="密码不能超过16位"
if len(psw)<4 then err(5)="密码不能少于4位"
if len(tel)>15 then err(6)="电话号码不能超过15个字符"
if len(tel)<7 then err(6)="电话号码不能少于7个字符"
if len(email)>50 then err(7)="Email最多只能有50个字符"
if not is_email(email) then err(8)="Email地址错误"
if not(isdate(byear & "-" & bmonth & "-" & bday)) then err(9)="生日您没有选择或生日日期无效"
for i=1 to 9
if err(i)<>"" then haveerr="yes"
next
%>
<%
set rs_user=server.CreateObject("adodb.recordset")
rs_user.open "select * from user_reg",hotel_conn,3,2
rs_user_total=(rs_user.RecordCount)+1
If (rs_user.RecordCount = -1) Then
rs_user_total=0
While (Not rs_user.EOF)
rs_user_total = rs_user_total + 1
rs_user.MoveNext
Wend
end if
rs_user.addnew
rs_user("user_name")=name
rs_user("psw")=psw
rs_user("sex")=sex
rs_user("age")=datediff("yyyy",byear & "-" & bmonth & "-" & bday,date)
rs_user("email")=email
rs_user("tel")=tel
rs_user("byear")=byear
rs_user("bmonth")=bmonth
rs_user("bday")=bday
rs_user.update
session("user_name") = name
%>
登录模块
登录模块主要是由文件login.asp来实现的。其登录核心代码见程序清单23.通过user_id和psw接收用户在首页填写的用户和密码,并打开数据库在user_reg用户信息表中查询,如果找到了相应的记录则将用户名写入session(“user_name”),并给变量haverr赋值为0作为显示正确登录的标识。
程序清单23 用户登录验证login.asp部分代码
<%
user_id=request.Form("user_name")
psw=request.Form("psw")
set rs_user=server.CreateObject("adodb.recordset")
sql="select * from user_reg where user_name = '" & user_id & "' and psw='" & psw & "'"
rs_user.open sql,hotel_conn,3,2
if not(rs_user.eof or rs_user.bof) then
session("user_name")=rs_user("user_name")
haveerr=0
else
haveerr=1
end if
%>
3.查看房间模块
查看房间信息是酒店应该提供一个必要功能。图26所示是查看房间页面的示意图,从图中可以看出在该页面显示了房间名称、房间类型、费用和预约操作。