提示,信息填写正确则进行后台数据处理。效果如图3-2
图3-2注册页面reg.asp
其主要代码如下:
<%
'判断用户是否已经提交注册请求
ifNOTisempty(request("RegSubmit"))then
'判断用户是否已经注册过
ifsession("regtimes")=1then
'如果已经注册过,则返回上一页面
callMsgBox("对不起,您刚注册过用户!","Back","None")
response.end
endif
'初始化ADODBrecordset对象
setrs=server.CreateObject("adodb.recordset")
'查询数据库,验证用户注册Email是否存在
rs.open"selectusername,useremailfrom[user]whereusername='"&trim
(request("username"))&"'oruseremail='"&trim(request("useremail"))&"'",conn,1,1
ifnotrs.eofandnotrs.bofthen
callMsgBox("您输入的用户名或Email地址已存在,请返回重新输入!","Back","None")
endif
rs.close
'该用户名没有被使用,则添加入数据库
rs.open"select*from[user]",conn,1,3
rs.addnew
下面代码对注册表单传递过来的数据进行处理。
'用户名
rs("username")=trim(request("username"))
'密码
rs("password")=md5(trim(request("password")))
'email
rs("useremail")=trim(request("useremail"))
'密码提示问题
rs("quesion")=trim(request("quesion"))
'提示问题答案
rs("answer")=md5(trim(request("answer")))
'真实姓名
rs("realname")=trim(request("realname"))
'身份证
rs("identify")=trim(request("identify"))
'电话
rs("mobile")=trim(request("mobile"))
'QQ
rs("userqq")=trim(request("userqq"))
'取得当前时间
rs("adddate")=now()
rs("lastvst")=now()
rs("loginnum")=0
rs("postcode")=0
rs("score")=0
rs("paymethord")=0
rs("deliverymethord")=0
'更新数据库
rs.update
rs.close
'释放资料
setrs=nothing
'设置cookie,把用户名写入cookie
response.Cookies(cookieName)("username")=trim(request("username"))
'设置cookie对象有效期
response.Cookies(cookieName).expires=date+1
'用session对象来存储变量
session("regtimes")=1
'设定session对象的超时时间为1分钟
session.Timeout=1
'提示注册成功,定向网页到muser.asp
callBox("注册成功!请到用户管理中心填详细资料!","GoUrl","muser.asp")
endif
%>
login.asp程序完成客户登录功能,用户填写用户名和密码后,单击[登录]按钮,则调用登录程序进行验证,如果登录成功,系统自动进入用户信息资料页面。关键代码如下:
<%
'判断用户是否单击[登录]按钮
ifNOTisempty(request("LoginSubmit"))then
'定义两个变量,对用户名和密码进行处理
dimusername,password
username=replace(trim(request("username")),"'","")
password=md5(replace(trim(request("password")),"'",""))
'初始化对象
setrs=server.CreateObject("adodb.recordset")
'查询数据库
rs.Open"select*from[user]whereusername='"&username&"'andpassword='"&password&"'",conn,1,3
'判断用户是否存在
ifnot(rs.bofandrs.eof)then
'判断用户密码是否正确,设置cookie
ifpassword=rs("password")then
response.Cookies(cookieName)("username")=trim(request("username"))
response.Cookies(cookieName)("vip")=rs("vip")
rs("lastvst")=now()
rs("loginnum")=rs("loginnum")+1
rs.Update
rs.Close
setrs=nothing
response.redirect"muser.asp"
else
callMsgBox("对不起,您的用户名或密码有误!","Back","None")
endif
else
callMsgBox("对不起,您的用户名或密码有误!","Back","None")
endif
endif
%>
Logout.asp程序完成客户退出处理,客户退出系统后,系统给出提示,并返回到首页。代码如下:
<%
response.Cookies(cookieName).Expires=NOW()-1
response.Cookies(cookieName)("username")=""
response.Cookies(cookieName)("vip")=""
response.Write"alert('您已成功注销!');"
response.redirect"index.asp"
%>
3.1.2客户资料的查看、更新及密码的修改
userinfo.asp查看操作是显示用户注册的所有信息。更新操作,首先从更改表单中获取相应值,执行后根据返回值做相应处理。其ASP代码如下:
<%
'判断cookie对象中用户名是否为空
ifrequest.cookies(cookieName)("username")=""then
response.Redirect"reg.asp"
response.End
endif
'初始化recordset对象
setrs=server.CreateObject("adodb.recordset")
'判断操作类型,如果是客户提交了保存操作,则保存数据
ifNOTisempty(request("SaveSubmit"))then
dimusername
username=request.cookies(cookieName)("username")
rs.open"selectuseremail,realname,quesion,answerfrom[user]whereusername='"&username&"'",conn,1,3
'对post传递过来的数据进行处理
rs("useremail")=trim(request("useremail"))
rs("realname")=trim(request("realname"))
rs("quesion")=trim(request("quesion"))
iftrim(request("answer"))<>""then
'对提示问题回答做加密处理
rs("answer")=md5(trim(request("answer")))
endif
'更新数据库
rs.update
rs.close
endif
'显示用户资料
rs.open"selectuseremail,vip,identify,quesion,realnamefrom[user]whereusername='"&request.cookies(cookieName)("username")&"'",conn,1,1
'rs.open"selectuseremail,vip,identify,quesion,realnamefrom[user]whereusername='timesshop'",conn,1,1
DimRank
Rank="普通会员"
'判断用户是否为会员
Ifrs("vip")=truethen
Rank="VIP会员"
Endif
%>
changepws.asp程序供客户修改密码,并在修改密码之前验证原密码的正确性,只有原密码正确,才可以修改密码。其ASP代码如下:
<%
'判断用户是否单击了确认修改密码的按钮
ifNOTisempty(request("ChangePwsSubmit"))then
dimusername
'读取cookie
username=request.cookies(cookieName)("username")
'初始化recordset对象
setrs=server.CreateObject("adodb.recordset")
'查询数据库
rs.open"selectpasswordfrom[user]whereusername='"&username&"'",conn,1,3
'用MD5加密密码后和原密码对比验证
ifmd5(trim(request("password")))<>trim(rs("password"))then
callMsgBox("对不起,您输入的原密码错误!","Back","None")
else
rs("password")=md5(trim(request("password1")))
rs.update
rs.close
setrs=nothing
callMsgBox("密码更改成功!","none","none")
endif
endif
%>
3.2图书信息模块的实现
主要是查看图书列表、搜索图书、显示图书信息、把图书放入购物车等功能。主要包括以下文件:
class.asp:显示图书分类列表。
sub.asp:显示分类图书。
new.asp:显示新品图书。
hot.asp:显示畅销图书。
commend.asp:显示推荐图书。
search.asp:搜索图书,可以按照图书名称、作者名称、出版社、出版时间、价格范围及图书类别搜索。
car.asp:查看我的购物车信息,图书结账。
vpro.asp:查看详细图书信息。
3.2.1分类的显示和详细信息的显示
分类列表的显示
class.asp程序实现图书的分类显示功能,
sub.asp程序完成当客户单击某一分类时显示具体分类图书的功能,显示内容为该图书的图片及一些基本的图书信息。
图书详细信息显示
vpro.asp程序完成当用户单击图书名称时显示图书的详细信息。效果如图3-3
图3-3图书详细信息显示界面
其关键代码如下:
<%
dimid
'得到图书id
id=request.QueryString("id")
'定义变量
Dimprename,company,intro,predate,graph2,description,remarks,price
'初始化recordset对象
setrs=server.CreateObject("adodb.recordset")
'在数据库中查询图书
rs.open"select*fromproductwhereid="&id,conn,1,3
'图书浏览次数加1
rs("viewnum")=rs("viewnum")+1
rs.update
%>
3.2.2图书的搜索
search.asp程序实现搜索,供客户输入搜索条件并进行有效性验证,当客户输入的搜索条件经过有效性验证后程序就会把数据提交到rsearch.asp,由rsearch.asp进行搜索和显示搜索结果。例如,我现在要搜索一本书名中有ASP的图书,就可以这样做,如图3-4。单击[开始搜索]出现图3-5的搜索结果。
图3-4图书搜索search.asp运行界面
图3-5图书搜索结果rsearch.asp运行界面
rsearch.asp代码如下:
<%
'判断用户是否进行搜索
ifrequest.QueryString=""then
callMsgBox("错误:没有搜索条件!","GoUrl","search.asp")
response.end
endif
'开始分页
ConstMaxPerPage=5
dimtotalPut
dimCurrentPage
dimTotalPages
dimj
dimsql
dimnid,sortsid
ifNotisempty(request.QueryString("page"))then
currentPage=Cint(request.QueryString("page"))
else
currentPage=1
endif
setrs=server.CreateObject("adodb.recordset")
'定义变量
dimname
dimauthor
dimmanufacturer
dimenabledate
dimexpiredate
dimsmallprice
dimlargeprice
dimcode
dimOrderField
dimOrder
'把从search.asp提交过来的数据赋值给相应的变量
name=trim(request.QueryString("name"))
author=trim(request.QueryString("author"))
manufacturer=trim(request.QueryString("manufacturer"))
enabledate=trim(request.QueryString("enabledate"))
expiredate=trim(request.QueryString("expiredate"))
smallprice=trim(request.QueryString("smallprice"))
largeprice=trim(request.QueryString("largeprice"))
OrderField=trim(request.QueryString("OrderField"))
Order=trim(request.QueryString("Order"))
code=trim(request.QueryString("code"))
ifOrderField=""thenOrderField="adddate"
ifOrder=""thenOrder="DESC"
sql="selectpagenum,name,mark,vipprice,id,author,productdate,price2,price1,discount,picfromproductwhere1=1"
'判断搜索条件,根据不条件设定不同的SQL语句
ifname<>""then
sql=sql&"andnamelike'%"&name&"%'"
endif
ifauthor<>""then
sql=sql&"andauthorlike'%"&author&"%'"
endif
ifmanufacturer<>""then
sql=sql&"andmarklike'%"&manufacturer&"%'"
endif
ifcode<>""then
sql=sql&"andcategoryidlike'%"&code&"%'"
endif
ifsmallprice<>""then
smallprice=CDbl(smallprice)
sql=sql&"andprice2>="&smallprice
endif
iflargeprice<>""then
largeprice=CDbl(largeprice)
sql=sql&"andprice2<="&largeprice
endif
ifexpiredate<>""then
expiredate=CDate(expiredate)
sql=sql&"andproductdate<=#"&expiredate&"#"
endif
ifenabledate<>""then
enabledate=CDate(enabledate)
sql=sql&"andproductdate>=#"&enabledate&"#"
endif
sql=sql&"orderby"&OrderField&""&Order
'查询数据库
rs.opensql,conn,1,1
'判断搜索结果
iferr.number<>0then
callMsgBox("数据库中无数据","Back","None")
response.End
endif
ifrs.eofAndrs.bofthen
callMsgBox("对不起,找不到你