BBS系统开发与帐户安全保护的实现论文.docx
《BBS系统开发与帐户安全保护的实现论文.docx》由会员分享,可在线阅读,更多相关《BBS系统开发与帐户安全保护的实现论文.docx(23页珍藏版)》请在冰豆网上搜索。
BBS系统开发与帐户安全保护的实现论文
BBS系统开发与账户安全保护的实现
摘要
BBS的英文名称是BulletinBoardSystem,翻译为中文就是“电子公告板”。
BBS在上世纪九十年代进入中国,并迅速普及。
本设计的目的是用ASP和SQL开发一个简易的BBS系统,并实现账户安全保护。
此外,BBS系统有操作简单、界面友好的特点,并具有广泛的应用前景。
BBS系统开发主要讲述了系统设计的基本功能和方法。
接着以BBS系统为例,逐一介绍开发的步骤:
系统分析、系统设计、系统实现。
在系统分析中先后用数据流程图、系统的功能结构图分析了BBS系统所需的各种数据。
在BBS系统的设计中,详细的展现了系统的各个功能模块,所需的数据库表及表字段,菜单的设计等,并通过运用MD5函数,实现用户账户的安全保护。
在BBS系统的实现中,取得了系统预期的成果,基本使各个模块的功能得以实现,并给出了模块实现的核心代码和主要的界面设计。
关键词:
BBS系统;ASP;SQL;账户安全
DevelopmentofBBSSystemandImplementationofAccountSecurityProtection
Abstract
BBS’sEnglishnameisBulletinBoardSystem.In90'softhelastcenturyBBSentersChinaandbecomespopular.AimofthisdesignistodevelopasimplesystemofBBSbasedonAspandSQL,andtheimplementationofaccountSecurityProtection.Furthermore,BBSsystemisgoodforeasyoperationandfriendlyinterface,ithascomprehensiveapplicationforeground.DevelopmentofBBSSystemmainlynarratesbasicfunctionandmethodforSystemDesign.Thentakethissystemasanexample,recommenddevelopingthestepofthissystemonebyone:
systemanalysis,systemdesign,andsystemrealization.SuccessivelyusedthedatastreamchartthesystemfunctionstructuredrawinginthesystemanalysistoanalyzeeachkindofdatawhichtheBBSsystemneeded.Inthedesignofthesystem,detailedeachfunctionmodulewhichhasrepresentedthesystem,necessarydatabaseformandfield,designofthemenu,andimplementationofuser'saccountsecurityprotectionbyusingMD5function.Intherealizationofthesystem,Igotanticipatedachievement,realizedeachmodule’sbasicfunction,andshowedthemodulesrealizationcorecodeandthemainGUIdesign.
Keywords:
BBSsystem;ASP;SQL;Accountsecurity
论文总页数:
21页
1引言
1.1BBS概念与发展背景
BBS是英文BulletinBoardSystem的缩写,翻译成中文为“电子布告栏系统”或“电子公告牌系统”。
BBS是一种电子信息服务系统。
它向用户提供了一块公共电子白板,每个用户都可以在上面发布信息或提出看法,早期的BBS由教育机构或研究机构管理,现在多数网站上都建立了自己的BBS系统,供网民通过网络来结交更多的朋友,表达更多的想法。
园内的公告板性质相同,只不过是通过电脑来传播或获得消息而已。
一直到个人计算机开始普及之后,有些人尝试将苹果计算机上的BBS转移到个人计算机上,BBS才开始渐渐普及开来。
近些年来,由于爱好者们的努力,BBS的功能得到了很多的扩展。
BBS最早是用来公布股市价格等类信息的,而且只能在苹果计算机上运行。
BBS于上世纪九十年代进入中国,并迅速普及。
已经成为新兴一代年轻人的时代新宠。
1.2BBS系统的应用
目前国内的BBS已经十分普遍,可以说是不计其数,其中BBS大致可以分为5类:
(1)校园BBSCERNET建立以来,校园BBS很快地发展了起来,目前很多大学都有了BBS,几乎遍及全国上下。
而本系统就是一个简易的校园BBS系统.
(2)商业BBS站,这里主要是进行有关商业的商业宣传,产品推荐等等,目前手机的商业站、电脑的商业站、房地产的商业站比比皆是。
(3)专业BBS站这里所说的专业BBS是指部委和公司的BBS,它主要用于建立地域性的文件传输和信息发布系统。
(4)情感BBS主要用于交流情感,是许多娱乐网站的首选。
(5)个人BBS 有些个人主页的制作者们在自己的个人主页上建设了BBS,用于接受别人的想法,更有利于与好友进行沟通。
若按其性质分则可以分为2类,为商业BBS站和业余BBS站。
2BBS理论基础
2.1BBS相关理论基础
进入二十一世纪,计算机技术迅速向着网络化、集成化方向发展。
传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息(多媒体)的新一代网络版应用软件,而目前网络版软件中似乎存在着两种不同的趋势,一种是称为客户端——服务器的C/S结构应用系统,这类软件具有结构严谨,运行效率高,服务器端压力小,安全性好等优点,被广泛运用于局域网中。
而另一种,也是本毕业设计所采用的,是称为浏览器——服务器的B/S结构应用系统,它的特点是在客户端直接采用了功能强大的浏览器软件作为界面,其优点在于软件开发效率高,客户端不受操作平台的限制、也不受地域的限制,网络传输量少,即适用于局域网,更适用于Internet。
而本系统就是B/S结构的BBS系统,它具有BBS系统应该具有的基本功能。
所谓B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。
随着Windows98/Windows2000将浏览器技术植入操作系统内部,这种结构更成为当今应用软件的首选体系结构。
将应用程序分成好几个离散逻辑组件,就是多层式结构应用程序。
最常见的选择是分成三个部分:
表示层、事务逻辑层和数据层,不过也有其它的组合。
多层式结构应用程序,在一开始是解决某些与传统客户端/服务器(主从式)应用程序相关的问题,但是随着Web的出现,此结构已经成为主导新程序之开发的结构。
表示层主要运行于客户端浏览器,采用Script(脚本)语言编写。
HTML、JavaScript、VBScript是此类应用系统中展示层最常用的脚本编制语言,结合CCS以及ActiveX技术,能设计出交互相当灵活功能又相当强大的客户端网页。
事务逻辑层设计通常有三个选择:
ASP网页、COM或COM+组件、DBMS中所执行的预存程序。
数据层较为灵活,视系统规模可选择Sybase、Oracle、MySQL、SQLserver或者MSAccess。
2.2BBS开发运行环境
本系统要求客户端支持IE4.0以上或与之兼容的浏览器软件,客户端硬件最低要求对应于IE4.0的硬件平台要求。
服务器端要求支持ASP以及SQL数据库。
本系统的开发环境和开发工具为:
WindowsXP,SQL,Dreamweaver。
安装此系统所需的基本软、硬件环境为:
(1)Windows2003/2000服务器版本。
(2)SQLServer2000或更高版本。
(3)计算机:
PentiumIII800MHz或更高。
(4)20G以上可用硬盘空间。
(5)显示器。
3系统功能需求分析
3.1BBS系统的综合要求
3.1.1系统功能要求
一个简易的BBS系统应具有的基础功能,包括新用户注册、用户登录、游客登录、发表帖子、阅读帖子、回复帖子的文章、用户资料修改,发送留言等。
本系统操作用户按不同级别依次可分为:
游客,普通用户、版主用户、管理员。
普通用户功能要求---通用功能:
发表或回复帖子、个人资料维护、用户留言,退出等。
版主用户功能要求---通用功能:
继承普通用户的功能,能删除所属版面内的帖子。
管理员功能要求---通用功能:
继承普通用户的功能,能删除BBS内所有版面里的帖子。
账户安全问题的实现:
运用MD5算法,实现用户账户的安全。
3.1.2系统的数据要求
根据系统的功能需求,本系统管理和维护以下几种数据元素(实体Entity):
用户、管理员、帖子。
(1)用户实体:
会员用户包含这样一些基本属性:
用户名、用户密码、用户EMAIL、性别、生日,所在地区,以及邮箱。
(2)管理员:
一个管理员可以删除BBS论坛里面各个版面的帖子,而版主用户,只能删除其自身所在版面的帖子。
(3)帖子:
帖子包含以下一些基本属性:
所属版面,作者,标题,帖子内容,帖子书写时间等等。
3.2数据库E-R图
图3-1用户与帖子之间管理关系E-R图
4系统概要设计
4.1模块的划分与功能设计
通过对用户需求调研并分析,确定系统应具备的功能,包括用户注册和登陆;用户个人资料修改和密码修改;用户留言;BBS帖子的阅读和回复等功能;管理员对帖子的删除;账户安全问题等。
各模块的具体功能设计如下:
用户管理部分:
此部分主要实现用户的登陆,用户的注册,以及用户修改个人信息的功能。
这些功能的是通过用户登陆模块,用户注册模块和修改个人信息模块来实现的。
论坛系统部分:
此部分为整个BBS系统的基本功能体现,显示帖子列表,阅读帖子和回复帖子的功能都在此部分中得以体现。
而整个功能也同样是通过三个小模块来实现。
留言系统部分:
一般BBS系统都有发送留言短信的功能,在操作上一般分为留言发送,回复留言以及浏览阅读留言三个方面。
其系统模块组织结构图如下:
图4-1:
BBS系统模块图
4.2数据库结构的设计
由于本系统所涉及到的功能不是特别多,所以设计的表单也不是特别多,本论坛的数据结构中主要包括4个基本信息表,根据系统功能分析,他们分别是用户信息表,文章信息表,留言信息表以及论坛菜单信息表。
信息表的基本功能如下:
(1)用户信息表(user):
记录所有可以登陆该系统的用户名,密码和其他相关数据。
(2)文章信息表(bbs):
记录了论坛所有的文章信息,包括回复的文章信息。
(3)论坛菜单信息表(bbsmenu):
该表存放了论坛的所有版块信息,包括版块的名称,版块的描述信息和版块的版主名称。
(4)留言信息表(message):
此表记录会员所发的所有信息留言,包括留言的标题,留言内容,留言发送者及留言接收者等信息。
具体设计见后页表设计:
1.用来存放系统用户信息的用户信息表
表4-1user表
列名
数据类型
长度
允许空
说明
id
varchar
16
N
用户编号(自动编号)
userid
varchar
50
论坛系统的登陆名称
pwd
varchar
50
论坛系统的登陆密码
name
varchar
50
用户的呢称
sex
bit
1
0和1不确定
birthday
char
20
用户注册时输入生日信息
2.用来存放发布的帖子相关信息的文章信息表
表4-2bbs表
列名
数据类型
长度
允许空
说明
id
bigint
8
N
帖子信息编号(自动编号)
belongto
int
4
用于标识论坛版面
title
varchar
500
帖子标题
content
text
16
帖子内容
writer
varchar
50
发表帖子的作者
reciv
int
4
某一篇帖子回复帖子数目
hit
int
4
某一篇帖子被点击的次数
bbsdate
datetime
8
发表帖子的时间
flag
int
4
标识帖子是否被锁定
3.用来存放论坛菜单信息的论坛菜单信息表
表4-3bbsmenu表
列名
数据类型
长度
允许空
说明
id
int
4
N
论坛菜单编号(自动编号)
title
varchar
100
版面名称
manger
varchar
500
管理该版块的版主名称
content
varchar
500
该版面的描述
4.用来存放留言信息的留言信息表
表4-4message表
列名
数据类型
长度
允许空
说明
id
int
4
N
留言信息编号(自动编号)
content
char
100
留言的内容
to-man
char
50
留言的接收者
from-man
char
50
留言的发送者
isread
int
4
标识留言是否已经被阅读
5系统详细设计
5.1论坛首页模块
5.1.1功能描述
论坛登录后首先是进入的论坛首页,首页主要实现以下功能:
(1)显示论坛的各个版块,
(2)实现论坛的内容导航
(3)提供用户修改个人信息的功能
(4)提供已经登录的用户的注销功能
(5)显示是否有新留言
5.1.2界面设计
图5-1论坛首页
5.1.3工作流程及代码设计
当用户输入自己的用户名和密码后,单击“登录”按钮,经过logincheck.asp将信息进一步处理之后,验证用户名和密码无误后便进入论坛首页页面,在此页面,用户能够实现发表新贴,阅读回复帖子以及发送接受论坛留言的功能。
论坛首页命名为default.asp其核心代码如下:
<%
setmrs=server.CreateObject("adodb.recordset")
%>
‘在这里,我们首先取出该用户的用户名称,然后利用该用户的名称和一个标志isread查询messag表,如果记录集不为空,说明该用户有新的未读消息,因此显示你有新短消息,提醒用户查看留言’此段代码如下:
<%
'to_man=session("name")
setmes_rs=server.CreateObject("adodb.recordset")
sql11="select*frommessagewhereto_man='"&session("name")&"'andisread=0"
mes_rs.opensql11,conn,1,3
ifnotmes_rs.eofthen
ismessage=1
mes_rs.close
elseismessage=0
endif
%>
5.2新用户注册模块
5.2.1功能描述
登录BBS后,若想在论坛上实现其功能,必须成为普通用户,其新用户注册页面的功能就是收集用户的基本信息,并对该信息的有效性进行最基本的验证,如用户名是否为空,密码是否为空等,同时将用户账户的密码用md5算法加密后保存在数据库中,从而实现用户账户的安全保护。
5.2.2界面设计
图5-2用户注册页面
5.2.3工作流程及代码设计
新用户注册界面命名为reg.asp,在系统登录页面点击“注册”便超链接进入该页面。
当用户输入自己的注册信息后,单击“现在注册!
”按钮,便将注册信息发送到reg1.asp,在客户端对表格信息进行验证。
此注册页面是在HTML代码中直接嵌入VBScript代码的方式,其实现的核心代码如下:
functionchkform(form)
{
if(form.idname.value=="")
{
alert("用户名不能空。
");
form.idname.select();
return(false);
}
if(form.password.value.length<6){
alert("密码长度不小于6。
");
form.password.select();
return(false);
}
if(form.password.value!
=form.rpassword.value){
alert("两次输入密码不相同。
");
form.rpassword.select();
return(false);
}
return(true);
}
<%@Language=VBScript%>
--#includefile="conn.asp"-->
onSubmit="returnchkform(this)",其中chkform()就是负责在客户端对表格信息进行验证的函数,这样做有利于减轻服务器的负担,提高系统的性能。
该函数实现用户名不为空,密码长度验证,以及两次密码输入是否相同的验证。
其实现方法为:
当用户填写完表单后,首先把填写的结果传递给指定的程序检查,在本系统中采用了函数chkform()来检查填写结果的合法性。
在reg.asp(注册页面)代码中描述了一个名称为form1的From,从中可以看出,当用户单击“注册”按钮时,首先将会由函数chkform(this)来对用户输入的字符进行有效性检查,如果合法,则会将客户端的信息传给reg1.asp,提醒用户通过登录页面重新登录系统。
5.3会员登陆模块
5.3.1功能描述
会员登录页面(default.htm)该页面表单的功能是获取用户名和密码,并验证用户名,密码是否为空等。
该页面实现方法如下:
会员在登录框内输入用户名和密码,单击“登录”按钮时会将填写的结果交给指定的程序,检查输入用户名和密码是否为空,该功能实现方法与前面的chkform()函数的实现方法一样。
5.3.2界面设计
图5-3登录界面
5.3.3工作流程及代码设计
这页相当于是bbs系统的HomePage,在这页实现对用户的身份判断。
可以看出会员登录页面中描述了一个名称为loginform的From,当单击用户“登录”按钮时,将首先会由函数cheform(this)来对用户输入的字符进行有效检查,如果合法,则会将客户端的信息传给logincheck.asp进行进一步的处理。
其实现的核心代码如下:
'判断账号及密码是否正确
setrecCheckUser=server.CreateObject("ADODB.recordset")
uid=trim(Request("userid"))
upwd=md5(trim(Request("pwd")),32)
strSQL="select*from[user]whereUserId='"&Request("userid")&"'andpwd='"&md5(Request("pwd"),32)&"'"
recCheckUser.OpenstrSQL,conn
ifnotrecCheckUser.EOFthen
session("viewflag")=recCheckUser("viewflag")
session("pwd")=upwd
response.cookies("loginok")=true
session("name")=uid
response.redirect"./bbs/default.asp"
setconn=nothing
'recCheckUser.Close
setrecCheckUser=nothing
Response.End
else
'用户账号及密码不正确
'recCheckUser.Close
setrecCheckUser=nothing
setconn=nothing
Response.Write"{window.alert('您输入的账号及密码错误,请重新输入!
')
从logincheck.asp的代码段可以看出,首先是将用户名和密码从Request范围中取出来,然后以用户名和密码作为搜索条件搜索数据库,如果返回的结果集不为空,则首先将用户名保存在Session范围,最后将页面导向到了论坛的首页,否则向用户返回出错信息。
5.4用户资料修改模块
5.4.1功能描述
当会员登录成功以后,导航条中就会出现修改个人信息的超链接,用户单击修改用户信息就会进入修改页面,实现用户对自己信息的修改操作。
5.4.2界面设计
图5-4用户资料修改页面
5.4.3工作流程及代码设计
要更改用户注册信息,就必须要与数据库相连,所以此页面要引用数据库连接页Conn.asp。
从过程上来看,当用户登陆成功后,用户的用户名就会保存到session范围中,因此在update.asp中首先是从session范围取出用户名,然后用该用户名作为检索数据库的条件,最后将这些信息以表格的形式输出给用户;当用户单击“确认修改”时,会将用户修改以后的信息保存到数据库。
其核心代码如下:
sql="select*from[user]whereuserid='"&session("name")&"'"
rs.opensql,conn,1,3
rs("userid")=idname
rs("pwd")=md5(pwd,32)
rs("name")=username
rs("zwid")=power
rs("sex")=sex
rs("question")=question
rs("answer")=md5(answer,32)
rs.update
5.5发帖模块
5.5.1功能描述
显示帖子列表页面的功能是对每个版块的内容和所有标题进行分页显示。
发表帖子页面主要用与收集