1、8.1用户注册与登录管理 一、用户管理数据表一、用户管理数据表 本系统采用本系统采用用户方式用户方式进行管理,即必须是进行管理,即必须是注册注册用户用户才能购买商品才能购买商品,为此我们得先建立一个,为此我们得先建立一个用用户数据表户数据表 。表名为表名为membermember,其各字段名与含义如下:其各字段名与含义如下:字段名字段名字段类型字段类型中文含义及说明中文含义及说明User_Id自动编号自动编号编号编号LoginName文本文本登录名登录名PassWord文本文本密码密码Name 文本文本姓名姓名Sex 文本文本性别性别Age文本文本年龄年龄Email 文本文本EmailPhon
2、e文本文本电话电话Fax文本文本传真传真Addr文本文本地址地址Zip 文本文本邮政编码邮政编码RegTime日期时间日期时间注册时间注册时间RegIp文本文本注册地址注册地址LoinIp 文本文本最近登录地址最近登录地址惟一标识一条记录,主键惟一标识一条记录,主键 用于登录使用,不一定为用户真实姓名用于登录使用,不一定为用户真实姓名网上购物最终是通过邮寄,故须用户真实姓名网上购物最终是通过邮寄,故须用户真实姓名二、用户注册与登录二、用户注册与登录 建立用户数据表后,我们即可编写程序完成用户的注册与登录工作了。1、用户登录界面、用户登录界面用户登录界面由两个文本框、两个按钮及一个超链接和一些显
3、示文本组成 用户登录 用户名 密码 注册 Login.htm文件源代码文件源代码通过通过FormForm表单将数据提交到表单将数据提交到login.asplogin.asp文件中文件中两个文本框接收用户名与密码两个文本框接收用户名与密码产生两个按钮,并提交或重置表单产生两个按钮,并提交或重置表单在login.htm中,通过表单将数据提交至login.asp文件。Login.asp的源程序为:从上一个文件(login.htm)中读入用户名与密码参数根据用户输入的用户名与密码建立数据集包含一个数据库链接文件(conn.asp)Login.asp文件源代码文件源代码根据新建数据集的记录数来判断是否为
4、合法用户session(username)=if rs1.recordcount0 thenresponse.write 登录成功session(username)=rs1(LoginName)elseresponse.write 用户名或密码错误!session(username)=end if判断记录集中记录是否空,如为空则表示用户名或密码不对建立一个session对象,说明已登录成功登录不成功,session值设为空Login.asp文件源代码文件源代码在上例中的session(“username”)=rs1(“LoginName”)是为建立一个session对象保存登录用户名于客户端的
5、浏览器中,以方便后续网页对登录用户的验证。dbpath=server.MapPath(./book.mdb)connstr=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&dbpath&;Persist Security Info=False set cn=server.createobject(ADODB.CONNECTION)cn.open connstr Login.asp文件中的语句为包含一个数据库链接文件(conn.asp),conn.asp的具体内容为:通过server.mappath()函数获取数据库实际路径建立connection对象
6、链接字符串Conn.asp文件源代码文件源代码2用户注册用户注册登录的用户必须是先经过注册过的,注册的目的是一方面确认用户的身份,另一方面录入用户的有用信息,以便在电子商务活动中能有效地进行。用户注册的界面如下:生成用户注册界面的文件为regist.htm,regist.htm文件通过一个表单将用户注册的信息提交至regist.asp文件,对于regist.htm文件源代码在此不再讲述,详细代码请参照附书光盘。regist.asp文件的作用则是将用户提交过来的信息读出并写入数据库,其部分源程序如下reginsname=request.form(user_name)pwd=request.for
7、m(pwd1)Name1=request.form(Name)Sex=request.form(Sex)Fax=request.form(Fax)Addr=request.form(Addr)Email=request.form(Email)Phone=request.form(Phone)zip=request.form(zip)regip=request.servervariables(remote_addr)str=insert into member(LoginName,PassWord,Name,sex,fax,addr,Email,phone,zip,regip)values(&r
8、eginsname&,&pwd&,&Name1&,&sex&,&fax&,&addr&,&Email&,&phone&,&zip&,®ip&)所有request.form语句均为从上个页面读取数据,并存放于变量中 获取客户端IP地址 生成生成SQL语句,并将语句,并将用户输入的数据用户输入的数据嵌入到嵌入到str字符串中字符串中 regist.asp文件部分源代码文件部分源代码dbpath=server.MapPath(./book.mdb)set cn=server.CreateObject(ADODB.connection)cn.open Provider=Microsoft.Jet
9、.OLEDB.4.0;Data Source=&dbpath&;Persist Security Info=Falsecn.execute str生成生成connection对象,并与数据库建对象,并与数据库建立链接立链接 通过通过connection对象对象的的execute方法方法执行执行SQL语句语句,完成,完成对数据库记录的对数据库记录的插入插入操作,即操作,即完成用户注册完成用户注册工作。工作。regist.asp文件部分源代码文件部分源代码8.2书籍管理 完成用户注册与登录后,下一步要操作就是对书籍的管理。下面我们要做的事就是对书籍数据进行增、删、改等维护操作。一、图书数据表一、图
10、书数据表图书数据表主要存放书籍信息及藏书量等内容,本实例采用的表名为books。Books表的字段设置及其含义:字段名字段名字段类型字段类型字段宽度字段宽度中文含义及说明中文含义及说明Book_Id自动编号自动编号编号编号bookname文本文本50书名书名author文本文本20作者作者publish文本文本20出版社出版社price数字数字书价书价memo文本文本250说明说明storage数字数字库存量(整型)库存量(整型)out数字数字借出数(整型)借出数(整型)唯一标识一条记录,主键可是多个作者书籍的基本介绍二、书籍管理程序二、书籍管理程序1图书浏览 本部分主要完成对书籍数据的浏览操
11、作,其用户界面如下图对应主要程序如下(程序名为:booklist1.asp)booklist1.asp文件部分源代码文件部分源代码set rs1=server.CreateObject(adodb.recordset)rs1.Open select*from books,cn,1,1rs1.PageSize=15 record_index=0 dim curreccurrec=int(Request.QueryString(move)if currec=rs1.PageCount thencurrec=rs1.PageCount end ifrs1.AbsolutePage=currecrec
12、ord_index=(currec-1)*rs1.生成recordset对象定义每页记录数读取页码参数页码超出范围时的处理定位页码与当前记录初始化当前记录数%pagesizedec=rs1.PageSize While(pagesizedec 0)AND(NOT rs1.EOF)%A HREF=./bookdetail.asp?id=详情 每页显示记录数利用循环用表格中显示记录内容每显示一条记录,record_index加1循环变量变化超链接booklist1.asp文件部分源代码文件部分源代码第一页 1 then%a href=booklist1.asp?move=前一页 rs1.pagec
13、ount then%a href=booklist1.asp?move=下一页 a href=booklist1.asp?move=最后一页 几种不同情况下的超链接通过move变量传递参数值booklist1.asp文件部分源代码文件部分源代码在此程序中用到记录集的在此程序中用到记录集的pagesize,absolupage等属性进行等属性进行当前记录的当前记录的分页与定位分页与定位2查看图书详情查看图书详细情况是在网页页面上显示具体某一本图书的详细资料,本实例为一个演示实例,从而数据表中没有对图书资料的详细资料进行细分,故查看图书详情页面显得较为简单,其程序见附书光盘bookdetail.a
14、sp。3图书录入 图书录入模书完成对图书资料的输入工作,它是一个后台管理模块,即一般用户不能对其操作,只有图书管理员才能对此文件进行操作(本实例为演示系统,故注册用户即可操作)。图书录入模块源代码如下:function form1_onsubmit()var err;err=;if(form1.bookname.value=)err=请输入图书名;if(form1.author.value=)err=err+n请输入图书作者名;if(form1.publish.value=)err=err+n请输入出版社;if(form1.price.value=)err=err+n请输入图书定价;else
15、if(!chk(form1.price.value)err=err+n图书定价必须为数字;if(form1.storage.value=)err=err+n请输入图书数量;else if(!chk(form1.storage.value)err=err+n图书数量价必须为数字;if(err.length=0)return true;elsealert(err);return false;对数值型数据进行检查此函数为客户端程序,完成对用户输入数据的有效性验证功能,即要求书名、作者、出版社等数据不能空,且数值性数据必须为数值内容。Chk函数源代码:var strsource=0123456789.
16、var tmp,bfor(i=0;i=(str.length-1);i+)tmp=str.charAt(i)b=strsource.indexOf(tmp);if(b=-1)return false;return true;判断是否存在非数值字符bookinput.asp文件部分源代码文件部分源代码if session(“username”)=”then Response.Redirect“login.htm”End if如果不是注册用户登录,则不能对本页面操作 利用表格输入图书资料表单提交至本身提交时利用form1_onsubmit()函数对数据进行检查书名 .图书简介 bookinput.
17、asp文件部分源代码文件部分源代码insertstr=insert into books(bookname,author,publish,price,storage,memo)values(&Request(bookname)&,&Request(author)&,&Request(publish)&,&cint(Request(price)&,&cint(Request(storage)&,&Request.Form(demo)&)cn.Execute insertstr生成插入记录的SQL语句执行insertstr语句,完成对图书资料的录入bookinput.asp文件部分源代码文件部分源
18、代码8.3 网 上 书 店 商 务 活 动本实例为一个网上书店,其主要内容为进行网上图书交易,下面我们将就图书交易活动进行程序设计。一、交易数据表一、交易数据表首先定义好图书交易的数据表,表名为trade,其表结构如下:字段名字段类型中文含义及说明T_id自动编号交易编号User_id数字用户编号Book_id数字图书编号tradetime日期/时间用户定购时间Tradeip文本定购时的IP地址Confirm是/否是否确认要购买sended是/否所订图书是否已邮寄Sendtime日期/时间邮寄日期惟一标识一条记录,主键注册用户(member)表外码图书资料(books)表外码为了方便对交易数据
19、的操作,交易表与用户表、图书表建立关联,其关联图如下。二、图书展示及图书预定购二、图书展示及图书预定购图书展示界面基本与图书浏览界面差不多,只是加上一个“定购”选项,其脚本程序也是在booklist1.asp的基础上进行部分修改,即将对定购图书的书号作为一个参数传递至购书确认页面。其增加程序如下(程序名为:booklist2.asp,具体内容见随书光盘)booklist2.asp文件部分源代码文件部分源代码1、生成定购选项代码为:INPUT type=checkbox id=checkbox1 name=checkbox1 value=对应图书数据集中的图书编号其用户界面如下为传递用户所选图书
20、编号参数,复选框采用如下语句:input type=checkbox id=checkbox1 name=checkbox1 value=在提交函数中对所有已定购的图书的图书编号生成一个参数,并传递至购书确认页面(booksale.asp),其代码为2、提交函数function form1_onsubmit()var sub;sub=;for(i=0;i0 then生成当前用户购书包中的记录集如记录集中记录数大于0,则表示尚有已预购但未确认的书存在于购书包中。End if else 当前用户的购书包中没有需要确定购买的图书。”产生购书确认界面booksale.asp文件部分源代码文件部分源代码
21、为传递所选图书编号参数,复选框采用如下语句:input type=checkbox id=checkbox1 name=checkbox1 value=if session(insert)=1 then session(insert)=2 对预定购图书数据进行处理 End if 判断是否由booklist2.asp页面提交,防止刷新页面造成数据重复插入此程序(程序名为booksale.asp)可由两个页面转入,一个是由booklist2.asp完成对图书的预定购后提交至此程序,另一个是由它本身完成确认定购后再提交。预定购后提交程序段如下:booksale.asp文件部分源代码文件部分源代码根据
22、booklist2.asp提交的图书预定购资料,对当交易表(trade)进行相关处理,即在trade表中增加新预定购的图书sale=Request.QueryString(sale)aa=split(sale,)for i=1 to ubound(aa)insertstr=insert into trade(user_id,book_id,tradeip,confirm)values(&session(userid)&,&aa(i)&,&request.servervariables(remote_addr)&,&false&)cn.Execute insertstrnext生成SQL语句,在
23、交易表(trade)中增加用户定购的图书记录,确定定购的交易表中的confirm为flase表示只是预定购,尚末正式购买。对传递的参数处理,分解成数组,每一元素为一个预定购的图书编号遍历数组中每一个元素,即每一个预定购的图书编号,进行处理。执行insertstr语句,完成对预定购图书操作booksale.asp文件部分源代码文件部分源代码从从booklist2.asp转入本页的处理程序转入本页的处理程序function form1_onsubmit()var submitstr;sub=;for(i=0;i=document.form1.elements.length-1;i+)if(docu
24、ment.form1.elements(i).type=checkbox)if(form1.elements(i).checked=true)submitstr=submitstr+,+form1.elements(i).value;form1.action=booksale.asp?confirm=+submitstr;return true;提交函数与图书预定购中的提交函数一样,产生一个已确认定购的图书编号连成的一个字符串,每个图书编号间用逗号(,)隔开。booksale.asp文件部分源代码文件部分源代码将所选择的图书生成由“,”隔开的图书编号组成的参数,传递给下一页面利用split函数
25、分离从从booksale.asp转入本页的处理程序转入本页的处理程序if Request.QueryString(confirm)thenbb=split(Request.QueryString(confirm),)for i=1 to ubound(bb)updatestr1=update trade set confirm=&true&where t_id=&bb(i)cn.Execute updatestr1 set updatebookrs=server.CreateObject(adodb.recordset)updatebookrs.Open select*from tradeda
26、ta where t_id=&bb(i),cn,1,1 updatestr2=update books set out=out+1,storage=storage-1 where book_id=&updatebookrs(book_id)cn.Execute updatestr2 updatebookrs.Close()Set updatebookrs=Nothing nextend if遍历数组中每一个元素,即每一个预定购的图书编号,进行处理。利用split函数生成数组bb判断是否为从booksale.asp转入,如是,则作确定购买处理将确认购买(confirm)标识修改为true已确定要
27、购买的图书从其总数中减1,该图书的已定购数加1booksale.asp文件部分源代码文件部分源代码四、商品发运四、商品发运已定购的图书打包邮寄与客户即完成整个图书交易,为此,我们还得对已发运的图书进行相应处理,其对应界面如下:当该用户所订购的书籍已打包邮寄,则选中邮寄的复选框,并按“确定”按钮以提交,则在数据库中表示该书籍已邮寄,同时将trade表中的send标识改为true表示已发寄出,books表中的out减1表示该被选购且已邮寄出去。为方便调用数据库中数据,系统建立了一个视图tradedata,它由book数据库中的book、member、trade三个表组成,利用book_id与use
28、r_id为外码建立联系。其关系代码如下:SELECT books.*,trade.*,member.*FROM books INNER JOIN(member INNER JOIN trade ON member.user_Id=trade.user_id)ON books.book_ID=trade.book_id利用内连结建立视图商品发运即书籍打包邮寄源程序(send.asp)如下if session(“admin”)“admin”then Response.Redirect exit.asp End if如果不是管理用户,则不能对本页面操作set rs1=server.CreateObj
29、ect(adodb.recordset)rs1.Open select*from tradedata where sended=False order by loginname,cn,1,1建立所有已定购但未邮寄的书籍的记录集send.asp文件部分源代码文件部分源代码如果记录集的记录数大于0则表示尚有未邮寄的书籍,则利用如下脚本产生用户界面同一用户的数据集中在一起显示if rs1.RecordCount0 thenform表单产生用户界面while not rs1.EOF采用循环来遍历数据集记录if rs1(loginname)username then利用表格产生用户界面 rs1.Move
30、Next username=username=rs1(loginname)针对不用户的数据集中显示,为此设置一个存储用户名的变量针对不用户的数据集中显示,为此设置一个存储用户名的变量send.asp文件代码结构文件代码结构function form1_onsubmit()var submitstr;sub=;for(i=0;i=document.form1.elements.length-1;i+)if(document.form1.elements(i).type=checkbox)if(form1.elements(i).checked=true)submitstr=submitstr+,
31、+form1.elements(i).value;form1.action=sendok.asp?send=+submitstr;return true;在send.asp文件中同样用到一个客户端提交函数,它与图书预定购中的提交函数一样,先遍历所有checkbox类型的元素,将所有选中的元素传递值利用逗号(,)隔开连成一个字符串。此程序提交到sendok,asp页面set updatebookrs=server.CreateObject(adodb.recordset)updatebookrs.Open select*from tradedata where t_id=&aa(i),cn,1,
32、1updatestr2=update books set out=out-1 where book_id=&updatebookrs(book_id)cn.Execute updatestr2updatestr1=update trade set sended=&true&,sendtime=now()where t_id=&aa(i)cn.Execute updatestr1Send.asp程序提交后至sendok.asp程序,对数据库进行相应的处理,sendok.asp程序如下send=Request.QueryString(send)aa=split(send,)利用split函数将参数
33、分解成数组for i=1 to ubound(aa)遍历数组,对数据进行相应处理next执行修改交易数据表中sended标识相为true,表示该书籍已邮寄,交易完成 修改交易数据表中sended标识相为true,表示该书籍已邮寄,交易完成sendok.asp文件代码结构文件代码结构至此,我们已完成本实例的基本功能,一个真正的网上书店还将涉及到很多方面,如用户权限的管理、银行转帐、图书分类等方方面面本实例只是起到一个抛砖引玉的作用,读者可以进一步进行完善。本实例中还用到一个样式表,其对应文件名为style.css,具体内容如下:BODYFONT-FAMILY:宋体;FONT-SIZE:smallerA FONT-FAMILY:宋体;FONT-SIZE:9pt;TEXT-DECORATION:noneA:hover FONT-FAMILY:宋体;FONT-SIZE:9pt;TEXT-DECORATION:underlineTD FONT-SIZE:9pt正文字体超链接字体设置表格单无格字体设置
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。