3.2 模块功能 (1)登入/登出模块:系统有两种用户:普通用户及管理员用户,管理员用户是直接设定的,是不能通过注册得到的,而普通用户则是可以通过提交注册表单注册的。用户登录时不需要选择以普通用户或管理员的方式登录,登录处理页面logoin.asp会根据用户名自动获取该用户的权限,并以此为依据来提供用户的操作权限及显示界面。用户登录时用到的数据项为uname 、pass 、flag。其中uname 为用户名,pass 为密码,flag为用户权限。 paper51.com (2)用户注册模块:用户在没有登录的情况下,通过点击注册按钮,阅读并同意相关条款,填写相关资料,并设置了填写资料要遵循的相关规则。提交注册后,如果没有错误产生,则注册成功。否则,注册失败,并转到错误处理程序err.asp。 内容来自www.paper51.com
(3)用户管理模块:无论普通用户还是管理员,他们登录后都可以修改自己的基本资料和密码。修改资料和密码,也要遵循注册时的填写规则。不论是管理员还是普通用户,均无法自己修改自己权限。 paper51.com
(4)用户搜索模块:提供用户的相关信息,用于相互之间了解。此处包含有查询功能,可以根据用户昵称来搜索该用户所有资料。该模块只针对注册用户开放,查询前必须先登录。 http://www.paper51.com (5)日历模块:这里引用现成的代码,提供一个即时更新显示日历的版面。由于日历不能显示时间,所以在首页的顶部区域嵌入一个按12小时制的时间显示模块。 paper51.com
(6)站内搜索模块:此模块暂未开发,留待日后扩充。这里把它先放出来是出于让界面更美观的需要。 paper51.com (7)火速链接模块:这是一个静态模块,为玩友提供相关的网站链接。目前连接的是17173游戏网站和QQ幻想官方网站,这两个对与本站的玩友群来说访问率最高。若有玩友有自己的网站,也可在此处做个友情链接。 paper51.com (8)留言模块:留言板是一个开放的模块,任何人都可以使用,目的是让更多的人能够参与进来留言,发表他们的看法,提出他们的建议和意见,利于网站的发展。 内容来自论文无忧网 www.paper51.com (9)文章管理模块:此模块将文章的标题按第页10条记录分页显示给用户,并区分用户权限以显示不同的操作界面。在管理员界面中,可以实施修改文章和删除文章的操作。在进行这些操作以前,系统会实事判断用户的登录状态和操作权限。如果登录超时或是用户越权操作,系统将会报错,并提交错误信息给err.asp页面处理。 paper51.com (10)文章显示模块:用户和管理员都可以通过文章显示列表的链接进入到文章显示界面。文章显示界面主要显示文章标题、文章作者、发表时间、和文章内容。文章标题的显示按发表时间的先后降序排列。 内容来自www.paper51.com (11)简介模块:这部分相对来说是一个静态的页面,对本玩友交流网站的简单介绍。在此处说明本站的用户群和作用,这样可以更有针对性的把兴趣相投的新朋友吸引进来。本站主要是用于游戏中玩友之间的交流,相当于是在玩友们QQ群思想上的一个采用,把QQ群不具备的功能在这里体现了出来,还可以根据需要不段的完善功能。从另一个方面说,这个简介模块中的内容,可以换成游戏中公会的公告,有重要通知也可放在上面。 内容来自www.paper51.com 3.3错误处理 内容来自论文无忧网 www.paper51.com
设计系统时,考虑了一些容易出错的地方,比如用户不经意的输入的不合适的内容,或是别有用心的人故意输入的带有尝试攻击的内容。在设计这个系统时,对已知会出错的内容采取过滤、丢弃、出错提示、要求重填等手段加以预防,在各个会出错的地方将出错信息提交给err.asp程序处理。当遇到出错信息,系统报错都会转入到err.asp页面,在此页面中提示出错内容以及解决方法,并能按需求跳转到前一页或者是网站首页。 paper51.com
4 设计与实现 内容来自www.paper51.com 这里只列出一些典型设计的流程(如登陆系统流程,发表文章流程,管理流程)以及重要数据表(如用户表,文章表和留言表)的设计。 http://www.paper51.com 4.1 典型模块流程图 内容来自www.paper51.com
(1)用户登录过程的详细流程: copyright paper51.com 用户登陆时候,首先检查所输入的用户名和密码是否为空,若为空则报错,不为空则与数据库中用户表中的用户资料进行验证。验证结果与数据库中的用户不匹配,则说明用户名或密码错误,系统报错;若验证通过则登录成功,并将用户登陆状态信息保存到客户端Cookies。 paper51.com
内容来自论文无忧网 www.paper51.com 图4-1 登陆流程图 内容来自论文无忧网 www.paper51.com (2)发表文章的流程: 内容来自www.paper51.com 用户在发表文章之前,首先要判断其是否登录,若没有登录,则系统报错并要求用户登录;若已经登录,用户便可以写文章。由于写文章的时间长短不一定,很有可能在用户写完文章的时候登录已经超时了。若超时系统会报错,则要求用户重新登录;若在有效登录状态,则文章发表成功并返回文章列表。 http://www.paper51.com
paper51.com 图4-2 发表文章流程图 内容来自www.paper51.com (3)管理员管理流程: http://www.paper51.com 管理员的身份是由用户表中每个用户的flag值确定的,0为普通用户,1为管理员。因此,在用户登录的时候,系统就已经确定了你是否具有管理员权限,用户不用再去选择什么样的登录方式。 内容来自论文无忧网 www.paper51.com
当管理员进行管理的时候,首先会检查是否登录或者登录超时。若没有登录或已经登录超时,系统会提示错处信息。若登录状态有效,管理就可以对用户发的文章或者留言进行一些管理操作。操作结束后,系统保存并返回。 http://www.paper51.com 内容来自论文无忧网 www.paper51.com 图4-3 管理流程图 http://www.paper51.com 4.2 数据表设计 paper51.com 图4-4为文章表,该表中定义了用户在发表文章时候文章的数据类型。以ID号为区别,ID是自增的。tid是文章的ID号,title是文章题目,txt是文章的内容,datatime是文章的发表时间(12小时制),tuname是发表者的用户名(不是呢称)。 http://www.paper51.com
内容来自www.paper51.com 图4-4 文章表 copyright paper51.com 图4-5是留言表,该表中定义了留言者发留言时所填资料的各种数据类型。由于这里是开放的模块不需要注册登陆过程,所以就简单一点。id是留言的序号,它是自增的。title是留言标题,connect是留言的正文,ldatatime是留言的时间(12小时制),name为留言者的姓名,这里不需要注册。 内容来自www.paper51.com 内容来自www.paper51.com 图4-5 留言表 内容来自www.paper51.com
图4-6是用户表,该表中定义了用户注册时所填个人资料的数据类型。这里表中没有显示出uid,因为一旦注册,会自动添加一个uid来做为用户的区别。Nick是用户的昵称,uname是用户名,sex是用户性别,pass是用户密码,flag是权限标志(0为普通用户,1为管理员,用户不能填写此项),qq是用户的QQ号码,tel是联系电话,email是用户的E-mail地址。 paper51.com paper51.com 图4-6 用户表 paper51.com 4.3 典型算法 copyright paper51.com (1)数据库连接: http://www.paper51.com MM_conn_STRING = "Driver={Microsoft Access Driver(*.mdb)};DBQ=C:\Inetpub\wwwroot\database\asp.mdb;" 内容来自www.paper51.com (2)验证码:为了加大暴力破解的难度,在登陆时设置了随机验证码。典型程序代码如下: paper51.com dim rank 内容来自www.paper51.com
Randomize http://www.paper51.com rank=Cstr(int(rnd*8999)+1000) 内容来自www.paper51.com response.cookies("rank")=rank 内容来自论文无忧网 www.paper51.com Response.Write(rank) 内容来自论文无忧网 www.paper51.com (3)用户注册:用户注册分为两大步骤,先要阅读注册须知,上面的各项条款要全部同意后才能进入资料填写页面。用户注册需要填写用户名,密码,确认密码,昵称,电子邮件,联系电话。其中用户名由a~z的英文字母、0~9的数字组成,长度为3~12个字符。密码长度为6~12位,区分字母大小写。昵称长度为4~12位。QQ只能是数字。在注册模块中,设定了一些专门的函数来检查用户资料的填写是否规范,只有在全部正确的情况下才允许注册。 copyright paper51.com 典型代码如下: http://www.paper51.com dim err 内容来自论文无忧网 www.paper51.com err=0 内容来自www.paper51.com subckqq(obj) paper51.com if not isnumeric(obj.value) then copyright paper51.com
msgbox("QQ号会不是数字的吗?") 内容来自论文无忧网 www.paper51.com obj.value="" 内容来自论文无忧网 www.paper51.com end if 内容来自论文无忧网 www.paper51.com endsub 内容来自www.paper51.com
subckuname(obj) 内容来自www.paper51.com dim lenth 内容来自论文无忧网 www.paper51.com lenth=len(obj.value) paper51.com
if lenth>12 or lenth<3 then paper51.com msgbox("用户名长度不对!") copyright paper51.com end if 内容来自www.paper51.com
endsub copyright paper51.com subckpassword(obj) 内容来自www.paper51.com dim lenth 内容来自论文无忧网 www.paper51.com lenth=len(obj.value) 内容来自论文无忧网 www.paper51.com if lenth>12 or lenth<6 then http://www.paper51.com msgbox("密码长度不对!") 内容来自www.paper51.com
end if 内容来自www.paper51.com endsub 内容来自论文无忧网 www.paper51.com subckpwd(obj) 内容来自www.paper51.com dim lenth copyright paper51.com lenth=len(obj.value) 内容来自www.paper51.com if lenth>12 or lenth<6 then 内容来自www.paper51.com msgbox("密码长度不对!") 内容来自论文无忧网 www.paper51.com end if 内容来自www.paper51.com endsub http://www.paper51.com subckreg() paper51.com if err=0 then 内容来自论文无忧网 www.paper51.com megbox("ok") 内容来自www.paper51.com else paper51.com return false 内容来自www.paper51.com end if 内容来自论文无忧网 www.paper51.com endsub http://www.paper51.com (4)文章添加:新发表文章的添加算法。 内容来自www.paper51.com title=replace(replace(Trim(Request.Form("title")),"'","''"),"<","<") http://www.paper51.com if title="" then 内容来自论文无忧网 www.paper51.com Response Redirect "err.asp? txt=标题不能为空" 内容来自论文无忧网 www.paper51.com
end if text=replace(replace(replace(Trim(Request.Form("text")),chr(10),"<br>"),"'","''"),"<","<") copyright paper51.com if text="" then 内容来自www.paper51.com
Response Redirect "err.asp?txt=内容不能为空" paper51.com end if copyright paper51.com
uname=Trim(Request.Cookies("login")("user")) 内容来自www.paper51.com times=now() paper51.com MM_dbValues="'"&title&"','"&text&"','"&uname&"','"×&"'" paper51.com MM_editQuery = "insertinto t1 (title,txt,tuname,tdatetime) values ("& MM_dbValues&")" copyright paper51.com (5)文章显示:文章在文章列表中的排列。 http://www.paper51.com 用户和管理员都可以通过文章显示列表的链接进入到文章显示界面。文章显示界面主要显示文章标题、文章作者、发表时间、和文章内容。这里文章的顺序是按照发贴时间进行降序排列。典型代码如下: copyright paper51.com Set Rs =Server.CreateObject("ADODB.Recordset") http://www.paper51.com
Rs.ActiveConnection= MM_conn_STRING http://www.paper51.com Rs.Source ="SELECT * FROM t1 WHERE tid = " + Replace(Rs__MMColParam,"'", "''") + " ORDER BY tdatetime DESC" 内容来自论文无忧网 www.paper51.com (6)用户搜索 :根据用户昵称来搜索该用户所有个人资料。 内容来自论文无忧网 www.paper51.com If (Request.Form("nick")<> "") Then http://www.paper51.com r2__MMColParam =Request.Form("nick") paper51.com End If 内容来自论文无忧网 www.paper51.com r2.ActiveConnection =MM_conn_STRING http://www.paper51.com r2.Source = "SELECT *FROM users WHERE nick = '" + Replace(r2__MMColParam, "'","''") + "'" http://www.paper51.com
(7)留言飞语 :留言板是一个开放的模块,任何人都可以使用,目的是让更多的人能够参与进来留言,发表他们的看法,提出他们的建议和意见,利于网站的发展。因此,这里不用考虑用户登录的问题。但是,这里与发帖不同的是留言最多只允许输入200个字符。 paper51.com
title=replace(replace(Trim(Request.Form("title")),"'","''"),"<","<") 内容来自www.paper51.com
if title="" then http://www.paper51.com
Response.Redirect"err.asp?txt=标题不能为空" http://www.paper51.com end if 内容来自论文无忧网 www.paper51.com text=Trim(Request.Form("text")) paper51.com if len(text)>200 then copyright paper51.com Response.Redirect"err.asp?txt=留言内容超过200个字了" 内容来自www.paper51.com end if paper51.com text=replace(replace(text,"'","''"),"<","<") copyright paper51.com
text=replace(text,chr(10),"<br>") 内容来自论文无忧网 www.paper51.com if text="" then copyright paper51.com
Response.Redirect"err.asp?txt=内容不能为空" paper51.com
end if 内容来自论文无忧网 www.paper51.com uname=Trim(Request.Form("name")) 内容来自www.paper51.com uname=replace(replace(uname,"'","''"),"<","<") 内容来自www.paper51.com
if uname="" then paper51.com Response.Redirect"err.asp?txt=留言者不能为空" 内容来自论文无忧网 www.paper51.com end if 内容来自www.paper51.com times=now() paper51.com MM_dbValues="'"&title&"','"&text&"','"&uname&"','"×&"'" paper51.com MM_editQuery ="insert into lyb (title,content,name,ldatetime) values ("&MM_dbValues &")" copyright paper51.com |