版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计(论文)电子论坛系统的设计与实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名职称:论文提交日期:电子论坛系统的设计与实现摘 要电子论坛即BBS已经是互联网上的一种极为常见的互动交流效劳。论坛可以为网友提供开放性的分类讨论区专题效劳,网友们可以在此发表自己的观感,交流某些技术,经验等。论坛也可以作为用户和商家交流的渠道,商家也可以在此答复用户提出的问题或发布某些消息。本系统使用ASP进行开发,数据库采用Microsoft SQL Server 2000。本文描述了电子论坛系统的设计与实现。首先对系统的需求进行了分析,建立系统工作流程图,设计系统数据库,对数据库结构进行了详细分析
2、。然后划分系统功能模块,最后详细描述了各个功能模块实现的方法,并给出相应代码。关键词:电子论坛系统;ASP;SQL Server 2000The Design and Implementation of BBSAbstractBBS as an electronic forum on the Internet is a very common interaction services. Forum provides an open platform to discuss one subject amony netizens . Netizens can express their impres
3、sions and communicate technologies and experience. It also can be used as a channel for the communication between customers with businessmen.The system is developed with ASP and Microsoft SQL Server 2000. In this paper, how to design and implement a BBS is introduced. First, it analyzes the demands
4、for this system, establishes system flowchart, designs system database and analyzes the database structure. Second, it introduces the modules. The way of implementation of each modules is introduced, and the source codes are showed in the end.Key words: BBS; ASP; SQL Server 2000 目 录论文总页数:32页 TOC o 1
5、-3 h z u HYPERLINK l _Toc169503513 1引言 PAGEREF _Toc169503513 h 1 HYPERLINK l _Toc169503514 1.1课题背景 PAGEREF _Toc169503514 h 1 HYPERLINK l _Toc169503515 1.2国内外研究现状 PAGEREF _Toc169503515 h 1 HYPERLINK l _Toc169503516 1.3本课题的研究意义 PAGEREF _Toc169503516 h 1 HYPERLINK l _Toc169503517 2系统分析 PAGEREF _Toc1695
6、03517 h 1 HYPERLINK l _Toc169503518 2.1系统需求分析 PAGEREF _Toc169503518 h 1 HYPERLINK l _Toc169503519 2.2系统功能描述 PAGEREF _Toc169503519 h 2 HYPERLINK l _Toc169503520 2.2.1 主要功能 PAGEREF _Toc169503520 h 2 HYPERLINK l _Toc169503521 2.2.2 论坛扩展功能 PAGEREF _Toc169503521 h 4 HYPERLINK l _Toc169503522 3系统设计 PAGERE
7、F _Toc169503522 h 4 HYPERLINK l _Toc169503523 3.1功能模块 PAGEREF _Toc169503523 h 4 HYPERLINK l _Toc169503524 3.2数据库设计 PAGEREF _Toc169503524 h 6 HYPERLINK l _Toc169503525 4系统实现 PAGEREF _Toc169503525 h 10 HYPERLINK l _Toc169503526 4.1首页 PAGEREF _Toc169503526 h 10 HYPERLINK l _Toc169503527 4.2数据库连接函数 PAGE
8、REF _Toc169503527 h 11 HYPERLINK l _Toc169503528 4.3用户模块 PAGEREF _Toc169503528 h 11 HYPERLINK l _Toc169503529 4.3.1 用户登录 PAGEREF _Toc169503529 h 11 HYPERLINK l _Toc169503530 4.3.2 用户注册 PAGEREF _Toc169503530 h 13 HYPERLINK l _Toc169503531 4.3.3 与其他用户联系 PAGEREF _Toc169503531 h 16 HYPERLINK l _Toc16950
9、3532 4.3.4 找回密码 PAGEREF _Toc169503532 h 17 HYPERLINK l _Toc169503533 4.3.5 用户登录添加验证码 PAGEREF _Toc169503533 h 17 HYPERLINK l _Toc169503534 4.4版面/公共信息模块 PAGEREF _Toc169503534 h 19 HYPERLINK l _Toc169503535 4.4.1 版面模块 PAGEREF _Toc169503535 h 19 HYPERLINK l _Toc169503536 4.4.2 公共信息模块 PAGEREF _Toc1695035
10、36 h 20 HYPERLINK l _Toc169503537 4.5帖子模块 PAGEREF _Toc169503537 h 20 HYPERLINK l _Toc169503538 4.5.1 发布/删除/修改帖子模块 PAGEREF _Toc169503538 h 20 HYPERLINK l _Toc169503539 4.5.2 帖子浏览模块 PAGEREF _Toc169503539 h 25 HYPERLINK l _Toc169503540 4.5.3 帖子搜索模块 PAGEREF _Toc169503540 h 25 HYPERLINK l _Toc169503541 4
11、.5.4 其它功能 PAGEREF _Toc169503541 h 26 HYPERLINK l _Toc169503542 4.6管理员模块 PAGEREF _Toc169503542 h 26 HYPERLINK l _Toc169503543 4.6.1 用户管理 PAGEREF _Toc169503543 h 26 HYPERLINK l _Toc169503544 4.6.2 版面管理 PAGEREF _Toc169503544 h 26 HYPERLINK l _Toc169503545 4.6.3 帖子管理 PAGEREF _Toc169503545 h 26 HYPERLINK
12、 l _Toc169503546 4.6.4 数据库备份和恢复 PAGEREF _Toc169503546 h 26 HYPERLINK l _Toc169503547 结 论 PAGEREF _Toc169503547 h 28 HYPERLINK l _Toc169503548 参考文献 PAGEREF _Toc169503548 h 30 HYPERLINK l _Toc169503549 致 谢 PAGEREF _Toc169503549 h 31 HYPERLINK l _Toc169503550 声 明 PAGEREF _Toc169503550 h 32 引言课题背景论坛效劳已经
13、是互联网上的一种极为常见的互动交流效劳。论坛可以为网友提供开放性的分类讨论区专题效劳,网友们可以在此发表自己的观感,交流某些技术,经验乃至人生的感悟与忧欢,亦可以作为用户和商家交流的渠道,商家也可以在此答复用户提出的问题或发布某些消息。国内外研究现状 BBS起源于20世纪初。最初,论坛只是用于发布公共信息和讨论问题的在线交流平台;后来,随着网络的普及,论坛的功能也越来越丰富,不仅仅可以发表文字,更是可以使用多媒体,受到了广阔网民的欢送。因此,商业网站对论坛重视起来,纷纷在自己的网站上开辟论坛,作为与网民交流的园地,同时在线技术支持和在线效劳也在论坛中开展起来。本课题的研究意义随着互联网技术的迅
14、猛开展,网络给人们带来了很多便利,比方人们借助于网络进行相互交流变得更加方便。电子论坛也称为BBS,BBS是Bulletin Board System的缩写,意即电子公告牌,一种在Internet上常见的用于信息效劳的Web系统,它的主要效劳是用来帮助浏览者相互沟通,吸引用户,效劳用户的。技术的开展一日千里,尤其是Web开发技术。早年间,我们还只能用静态的HTML编写静态的网站,毫无交互性可言。随着技术的飞速开展,我们有了动态的HTMLDHTML,然后有了脚本Script,脚本有很多种,这些都伴随着早期的Web开发者走了很长,很苦的日子。到了21世纪,Web的开发者们迎来了幸福的生活,Micr
15、osoft,Sun等公司相继推出了强大,快捷的ASP,PHP,JSP和ASP.NET等开发技术,我们可以使用多种编程语言来进行开发,大大提升了网站开发的效率,质量。我们尽管可以说哪一种技术是最流行的,但是很难说哪一种技术是最好的,每一种技术都在它最对口的应用上。对于电子论坛系统,我选择了ASP技术,它同样可把我们想要的功能很好的实现。系统分析系统需求分析首先找出论坛针对的对象,得出一个简洁的例表:用户:论坛的使用人员,进行某些操作时需要注册。版面:说明发言内容的类型。公共信息:与论坛相关的信息。帖子:论坛中单个观点的讨论。管理员:与论坛效劳的人员。论坛的对象不是孤立的,它们是紧密联系的,下面是
16、论坛各个对象之间的关联表,关联是单向的,是指左侧对象对上方对象的活动。无关联的用表示,如果两者只要单向关联,那么在另一个对象关联时用表示。表1 各对象之间的关系表用户版面公共信息帖子管理员用户注册 修改 浏览 联系浏览浏览 发布浏览 发布 修改 删除版面公共信息帖子管理员删除 授权添加 删除 修改添加 删除 修改添加 删除 修改至此,论坛的需要分析完成,接下来是论坛的功能设计。系统功能描述2.2.1 主要功能首先从用户开始,用户关联的对象是自身,版面,公共信息,帖子。分别根据用户与这些对象的联系给出一个明确的菜单表2 用户功能表序号功能名称说明1用户注册用户在论坛填写必要信息就可以成为注册用户
17、,注册后,可修改自己的注册信息2用户登录用户注册后可使用用户名,密码登录,可选择用户名,密码保存期限3浏览用户信息注册用户可查看其它用户信息序号功能名称说明4与其它用户联系注册用户可发站内短信5浏览版面任何用户可浏览版面信息6浏览公共信息任何用户可浏览公共信息7浏览帖子任何用户可浏览帖子8发布修改删除帖子注册用户登录后可发布帖子,修改自己的帖子,删除自己的帖子9对帖子的特殊操作主要针对版主类型的用户,可对帖子置顶,设置精华,删除帖子,移动帖子等操作接下来的版面,公共信息,帖子都没有和其他对象的关联,它们在论坛中是被动对象,是被其它对象所操作。因此针对它们的主要功能是由其它对象产生,例如浏览版面
18、就是用户的功能。管理员是论坛的一个特殊群体,它们的主要工作是保证论坛的正常运行,他们可以和论坛的所有对象产生联系,因此他们的功能也很丰富表3 管理员功能表序号功能名称说明1用户删除对于在论坛中造成很坏影响的用户,应该删除他们的身份2用户授权授予用户版主权限3版面管理版面是论坛的枝干,对版面进行添加,修改,删除等操作4公共信息管理公共信息展示论坛的状态,不能出现非法言论5帖子的管理帖子是论坛的枝叶,帖子的好坏关系到论坛的健康开展,对帖子进行删除,移动等6数据库的备份管理员应该定期地对系统数据库备份,以免造成不必要的损失现在分析各个对象的相关操作,设计为对象的功能实现接口,即为对象的操作方法。各个
19、板块有浏览列表和管理两个方法,管理方法又可以分为添加,修改,删除3个子方法。帖子有浏览,发帖,回帖,搜索和管理5个方法,浏览方法又分为列表和查看两个子方法,管理方法分为编辑,删除,置顶,移动,指定精华5个子方法,如图。管理员用户发帖回帖搜索浏览帖子管理帖子编辑指定精华置顶移动删除 图1 帖子对象的相关关系用户有注册、登录2个方法,管理用户方法又分为删除和设置权限2个子方法,如图。注册用户管理员管理用户登录设置权限删除 图2 用户对象的相关关系这样分析完后,前面列出的功能列表就有了各自的归属对象。论坛一般存在两种用户:注册用户和管理员。用户的权限是向下覆盖的,既上级权限包含下级权限,在论坛中,管
20、理员是上级权限。论坛的3大根本功能的相互关系如下列图所示。浏览帖子回帖帖子列表发帖 图3 论坛根本功能的关系本系统还有一些是论坛的内容更加丰富的扩展功能。2.2.2 论坛扩展功能下面是个一个论坛扩展功能表。表4 扩展功能表序号功能名称说明1用户控制自己的信息用户不想让其他用户看到自己的信息,可以控制自己的信息是否公开序号功能名称说明2用户登录添加验证码防止暴力破解密码,输入用户名或密码错误会重新生成验证码3站内短信方便用户在站内联系4帖子评价提高用户参与论坛的积极性5帖子发布添加多媒体吸引用户,扩展帖子发布功能6论坛收藏保存用户喜欢的内容,方便用户查看7帖子搜索提供模糊搜索,方便用户找到感兴趣
21、的主题8用户等级给用户一个荣誉,提高用户发帖的积极性9论坛情况显示把论坛的一些数据显示给用户,如发帖数,在线用户人数等10数据备份防止论坛出现故障,能够正常运行11非法言论过滤对于一些非法言论可以在论坛中进行默认设置过滤添加了这几个扩展功能后,论坛就显得平易近人多了,也更具有使用性。系统设计功能模块根据上一节给出论坛所必须的功能,划分模块。模块的划分主要是按照每一个对象的操作来归类。论坛操作的对象是上一节所归纳的5个。下面就针对这5个对象划分功能模块。用户:有两个模块,一个是用户注册,登录,修改信息等功能组合,是用户对用户自身的操作;另一个是管理员对用户进行删除,授权,是管理员对用户的操作,如
22、表5。表5 用户功能模块表模块模块包含的功能用户模块用户注册用户登录浏览其它用户信息与其它用户联系用户控制自己的信息用户登录添加验证码用户等级管理员模块用户删除用户授权版面:也有两个模块,一个是浏览模块,一个是管理模块。其功能模块列表如表6。表6 版面功能模块表模块模块包含的功能版面浏览模块浏览版面版面管理模块版面管理公共信息:用户浏览公共信息的功能划分一个模块,管理员对公共信息的操作划分为一个模块,其功能模块列表如表7表7 公共信息功能模块表模块模块包含的功能公共信息显示模块浏览发布的公共信息公共信息管理模块公共信息管理帖子:帖子包括用户对帖子的操作和管理员对帖子的操作,相应地分为帖子模块和
23、帖子管理模块,如表8。表8 帖子功能模块表模块模块包含的功能帖子模块浏览帖子发布/修改/删除帖子对帖子的特殊操作帖子评价帖子发布添加多媒体论坛收藏帖子搜索帖子管理模块删除帖子移动帖子管理员:管理员是对其他对象进行操作,如表9。表9管理员管理功能模块表模块模块包含的功能管理员管理模块用户管理版面管理帖子管理数据备份另外,对于用户使用的模块称为前台模块,管理员使用的模块称为后台模块。系统总体功能划分如图4。图4 系统总体功能划分数据库设计本论坛使用Microsoft SQL Server 2000数据库,下面列出是数据库设计的详细。1建立数据表间的关系本论坛数据库共有11个数据表,具体如表10所示
24、。表10 论坛数据表序号表名说明1user_t用户信息表2topic_t主题信息表3superAdmin_t论坛管理员表4post_t帖子信息表5message_t短消息信息表6grade_t用户积分等级表7friend_t用户好友表8file_t文件上传表9board_t子版面信息表10area_t父版面信息表11admin_t版主信息表下面是数据表之间的关系图,如图5。图5 数据表关系2数据表结构的详细设计表11 用户信息表(user_t)序号字段名字段类型说明备注1useridInt用户编号主键2usernameVarchar(50)用户名Not null3userpasswordVar
25、char(50)密码Not null4useremailNvarchar(255)电子邮件Not null5usersignNvarchar(255)用户签名6usersexVarchar(50)用户性别Not null7userfaceNvarchar(255)头像8pointInt积分9joindateDatetime注册日期Not null10userbirthdayNvarchar(50)用户生日11userquestionNvarchar(50)密码问题Not null12useranswerNvarchar(50)密码答案Not null13userlastipNvarchar(4
26、0)最后登录IPNot null14userhiddenbit是否隐身登录Not null15userqqNvarchar(255)用户QQ16truenameNvarchar(255)真实姓名17countryNvarchar(255)国家18cityNvarchar(255)城市19constellationNvarchar(255)星座20bloodNvarchar(255)血型21phoneNvarchar(50) 22WorksNvarchar(255)职业23SchoolNvarchar(255)毕业院校24AddressNvarchar(255)家庭住址25jbzlbit是否公开
27、根本资料Not null26xxzlbit是否公开详细资料Not null在用户信息表里保存的是在论坛注册用户的信息,用户编号和用户名在论坛中是不能重复的,用户名不能重复还使用用户编号的原因是计算机对数字检索速度更快。表12 父版面信息表(area_t)序号字段名字段类型说明备注1areaidInt父版面编号主键2areanameVarchar(255)父版面名Not null3setuptimedatetime建立时间Not null表13 子版面信息表(board_t)序号字段名字段类型说明备注1boardidInt子版面编号主键2boardnameVarchar(50)子版面名Not n
28、ull3areaidInt父版面编号Not null序号字段名字段类型说明备注4readmeVarchar(255)版面说明Not null5setuptimeDatetime建立日期Not null6boardmasterVarchar(50)版主7topicnumberInt主题数量Not null8indexIMGVarchar(255)版面图片Not null表12和13是版面信息表,这里使用两个表是为了编程方便,父版面和子版面是通过areaid字段关联的。表14 主题信息表(topic_t)序号字段名字段类型说明备注1topicidInt主题编号主键2titleVarchar(255
29、)主题Not null3bordidInt版面编号Not null4replyInt主题回复数Not null5useridInt用户编号Not null6usernameVarchar(50)用户名Not null7DateAndTimeDatetime发表日期Not null8hitsInt点击数Not null9istopBit是否置顶Not null10isbestBit是否精华Not null11fileidint上传文件编号Not null表15 帖子信息表(post_t)序号字段名字段类型说明备注1postidInt帖子编号主键2parentidInt回复帖子编号Not null
30、3boardidInt版面编号Not null4usernameVarchar(50)用户名Not null5useridInt用户编号Not null6topicidInt主题编号Not null7titleVarchar(255)主题Not null8DateAndTimeDatetime发表日期Not null9bodyText帖子内容Not null10ipVarchar(40)用户IPNot null以上两张表是紧密关联的,论坛主题信息表记载了论坛中主题帖的信息,建立这个表的原因是用户在浏览论坛中的帖子时先应看到的是主题列表,如果主题能够吸引用户,用户才会去看其中的内容,否那么用户一
31、进来就看到帖子内容,会使用户感觉非常的杂乱。这两个表是通过topicid字段联系起来的,parentid字段是用来针对特定的帖子回复。接下来几张表是论坛的其它功能需要的数据表。表16 短消息信息表(message_t)序号字段名字段类型说明备注1midInt短消息编号主键2senderVarchar(50)发送者Not null3inceptVarchar(50)接受者Not null4titleVarchar(255)主题Not null5contentVarchar(255)内容Not null6sendtimeDatetime发消息时间Not null7flagbit是否已读Not nu
32、ll表17 用户等级信息表(grade_t)序号字段名字段类型说明备注1gradeidInt自动编号主键2useridInt用户编号Not null3postidInt帖子编号Not null4gradeVarchar(255)等级Not null5pointInt积分Not null6ipVarchar(40)IPNot null表18 文件上传信息表(file_t)序号字段名字段类型说明备注1fileidInt文件编号主键2fnameVarchar(100)文件名Not null3useridInt用户编号Not null4enameVarchar(50)文件扩展名Not null5fty
33、peVarchar(255)文件类型Not null6fsizeVarchar(255)文件大小Not null表19 好友信息表(friend_t)序号字段名字段类型说明备注1FidInt自动编号主键2UseridInt用户编号Not null3usernameVarchar(50)用户名Not null4friendidInt好友编号Not null5frinednameVarchar(50)好友名Not null6addtimedatetime添加时间Not null表20 管理员信息表(admin_t)序号字段名字段类型说明备注1masteridInt自动编号主键2useridInt用
34、户编号Not null3usernameVarchar(50)用户名Not null4boardidInt版面编号Not null5flagbit权限标识Not null系统实现首页当用户翻开论坛时,首先看到的是论坛首页,用户从首页可以看到和论坛相关的并且能激起用户兴趣的东西。比方发帖数,在线用户数以及论坛板块的情况,如图6所示。图6论坛首页首页分为3个局部,最上面的导航条为一局部,中间的公共信息为一局部,下面的版面为一局部。将导航条局部单独写入文件top.asp作为公共程序,以后任何一个页面需要就使用来调用。下面是top.asp的程序。1 这里显示的是游客的导航条2 这里显示的注册用户的导航
35、条3 程序说明:用户登录后将用户名存入session对象来判断用户状态。公共信息局部是显示了论坛和当前用户的状态,该局部的详细内容将在后面的公共信息局部讨论。版面局部显示了版面的列表,该局部的详细内容将在后面的版面局部讨论。至此,首页的主要程序已经介绍了,以后章节是各个模块的主要程序。数据库连接函数SQL Server数据连接要求提供用户名,密码,数据库名及数据库效劳器地址,下面是使用ADO连接数据库的代码:1 4 用户模块4.3.1 用户登录下面是一个用户登录的界面,如图7。图7 用户登录界面下面是对用户登录页面的表单处理程序1 % 验证码处理2 If trim(request.form(v
36、alidatecode)=empty or Trim(Session(cnbruce _ValidateCode)Trim(Request.Form(validatecode) Then3 response.write(请注意正确输入验证码)4 response.end5 end if6 session(user)=request.Form(username)7 user=request.Form(username)8 session(pwd)=request.Form(userpwd)9 pwd=request.Form(userpwd)10 ishidden=request.Form(hi
37、dden)11 set rs = server.CreateObject(adodb.recordset)12 sql=select * from user_t where username=&session(user)& and userpassword=&session(pwd)&13 rs.open sql,conn,3,314 if rs.eof and rs.bof then 判断用户是否存在15 response.Redirect(login_error.asp)16 else17 session(userid)=rs(userid)18 sql1=update user_t se
38、t userhidden=&ishidden& where userid=&session(userid)&用户是否隐身19 conn.execute(sql1)20 select case request(usercookie)把用户信息写入Cookie21 case 122 response.Cookies(user)(username)=user23 response.Cookies(user)(userpassword)=pwd24 response.Cookies(user).expires=date()+125 case 226 response.Cookies(user)(use
39、rname)=user27 response.Cookies(user)(userpassword)=pwd28 response.Cookies(user).expires=date()+729 case 330 response.Cookies(user)(username)=user31 response.Cookies(user)(userpassword)=pwd32 response.Cookies(user).expires=date()+36533 end select34 session(name)=request.Form(username)35 response.Writ
40、e()36 response.Write(session(name)37 response.Write(!欢送你回来!)38 response.Write(两秒钟后自动转入首页)39 end if40 rs.close41 set rs=nothing %程序说明:第15行是对验证码的处理;第610行是将从表单获取的数据存入变量;第1114行是依据输入的用户名和密码为条件对用户信息表user_t进行查找,如果没有查找到记录说明该用户输入的用户名或密码错误;第15行转到错误处理页面;第1819行是将用户是否隐身登录标记,即是对用户信息表中的userhidden字段标记;第2033行是将用户信息写
41、入Cookie。4.3.2 用户注册用户注册,首先要检查的就是用户填写的信息,其中包括:字段是否空白,假设空白那么不接受。输入的E-mail是否正确,假设E-mail中没有,符号位于E-mail的第一个字符或者位于E-mail的最后一个字符都算错误。两次输入的密码是否一致。用户名是否被使用。电子邮件是否被使用。user_t新用户注册reg.asp修改信息update_userinfo.asp修改密码update_pwd.asp忘记密码lostpwd.asp写入写入读取写入读取读取图8用户注册各个页面与数据库的关系下面是验证用户注册信息的程序:1 % a=instr(request(userpa
42、ssword),*) 2 b=instr(request(userpassword), )3 if username=or useremail=or userquestion=or useranswer=or userpassword=or userpassword1=then4 response.Write(必填信息不能为空,请填完!)5 elseif userpassworduserpassword1 then6response.Write(两次输入密码不一致,请重新输入!)7 elseif len(username)10 then8response.Write(你输入的用户名太长,请重新
43、输入!)9elseif len(userpassword)18 then10 response.Write(密码不符合要求,请重新输入!)11 elseif not isvalidemail(useremail) then12 response.Write(电子邮件地址错误,请重新输入)13 elseif a0 or b0 then14 response.Write(请不要将*和 等符号作为密码!)15 elseif useronly(username,useremail) then16 response.Write(用户名被占用!)17 else 18 验证通过后将用户信息写入用户信息表us
44、er_t 19 end if %程序说明:第12行是取出密码中“*和“ 在字符串中的位置;第11行调用了isvalidmail函数,该函数是验证电子邮件地址正确性;第15行调用了useronly函数,该函数是验证用户名和电子邮件唯一性;下面给出验证电子邮件正确性的程序:1 function isvalidemail(email)2 dim names,named,I,c3 isvalidemail=true4 names=split(email,)5 if ubound(names)1 then6 isvalidemail=false7 exit function 8 end if9 for
45、each named in names10 if len(named)=0 then11 isvalidemail=false12 exit function13 end if14 for i=1 to len(named)15 c=lcase(mid(named,I,1)16 if instr(“abcdefghijklmnopqrstuvwxyz_-.,c)=0 and not isnumericI then17 isvalidemail=false18 exit function19 end if20 next21 if left(named,1)=. Or right(named,1)
46、=. Then22 isvalidemail=false23 exit function24 end if25 next26 if instr(names(1),.)=0 then 27 isvalidemail=false 28 exit function 29 end if 30 i=len(names(1)-instrrev(names(1),.) 31 if i2 and i3 then 32 isvalidemail=false 33 exit function 34 end if 35 if instr(email,.)0 then 36 isvalidemail=false 37
47、 end if 38 end function下面是验证用户和电子邮件唯一性的程序:1 function useronly(user,email) 2 set rs = server.CreateObject(adodb.recordset)3 sql=select * from user_t where username=&user& or useremail=&email& 4 rs.open sql,conn,3,3 5 if rs.eof and rs.bof then 6 useronly=false 7 else 8 useronly=true 9 end if 10 rs.clo
48、se 11 set rs=nothing 12 end function它包括修改信息upadate_userinfo.asp和修改密码update_pwd.asp两个页面。两个页面都是更新用户信息表user_t里的特定字段,这里就不再列出具体程序。4.3.3 与其他用户联系站内用户通过短消息与其他用户联系,下面是用户收/发短消息的页面:图9 用户收/发短消息页面该功能包括了发短消息,发件箱和收件箱三局部,发短消息是向短消息表(message_t)添加记录,发件箱和收件箱都是从message_t表读取记录。标记短消息是否已读是对数据表message_t中的flag字段操作。下面是标记短消息已读
49、的程序:1 下面是统计未读消息数的程序:1 4.3.4 找回密码当用户忘记密码时,可以使用找回密码功能。这就要用到用户信息表user_t里的userquestion和useranswer两个字段。系统根据用户名给出密码问题,用户给出密码答案,假设匹配,系统会将用户的密码发至用户注册时填写的电子邮箱中。系统给出密码问题和用户给出密码答案是对数据表user_t的读/写操作,前面已经介绍过类似的程序,就不再讨论,这里给出系统是如何将密码发至用户邮箱的程序:1 4.3.5 用户登录添加验证码使用验证码,用户每次登录时都不一样,这样做的目的是为了防止有人利用破解程序,暴力破解用户的密码。验证码的处理程序
50、已经讨论过,这里给出生成验证码的程序:1 版面/公共信息模块4.4.1 版面模块版面浏览指的是版面列表,下面是一个显示版面的程序,用了一个循环的嵌套来显示父版面和子版面,使用了表area_t和表board_t。1 翻开表board_t8 a href= showTitle.asp?boardid=显示子版面名,并作为进入子版面主题列表的链接9 4.4.2 公共信息模块公共信息局部的程序publicInfo.asp显示论坛和当前用户的状态,下面是一个统计在线人数的程序。1 0 then11 for i=lbound(application(onlineuser) to lbound(applic
51、ation(onlineuser)12 id=application(onlineuser)(i)13 if idsession.SessionID then14 tmp(num)=id15 num=num+116 end if17 next18 end if19 tmp(num)=session.SessionID20 application(totalusers)=num+121 redim preserve tmp(application(totalusers)22 application(onlineuser)=tmp23 end if24 application(session.Se
52、ssionID & lastaccesstime) =timer25 redim tmp(application(totalusers)26 num=027 for i=0 to application(totalusers)-128 id=application(onlineuser)(i)29 if (timer-application(id & lastaccesstime)idletime then30 tmp(num)=id31 num=num+132 else33 application(id & lastaccesstime) =empty34 end if35 next36 i
53、f numapplication(totalusers) then37 redim preserve tmp(num)38 application(onlineuser) =tmp39 application(totalusers)=num40 end if41 application.UnLock %帖子模块4.5.1 发布/删除/修改帖子模块网络技术的开展日新月异,现在用户发言时使用的格式也是丰富多彩。例如:用户可以上传文件,可以粘贴多媒体等。下面是一个帖子的发布页面,如图10。图10 帖子发布页面1文件长传局部文件上传可以分为组件上传和无组件上传,本论坛使用的是无组件上传,它的好处是不受
54、系统环境的影响。并且将文件上传到文件夹,将文件信息写入文件信息数据表file_t中。首先分析上传数据格式,在标签中增加enctype=multipart/from-data属性后,上传的数据是一个长长的二进制字符串,其中包含了文件浏览框的名字,文件的客户端路径,文件的MIME类型,文件内容,文本框的名称,文本框的值等信息。同时表单提交的是二进制字符串,需要转换为文本字符串才能在页面上显示。下面是获取上传文件信息的函数:1 Function GetFileInfo(FormName)2 Dim strTemp,dataStart,dataEnd,dataLen,temp,intFlag3 str
55、Temp=StringToBinary(Content-Disposition: form-data; name= & FormName & ; filename=)4 intFlag=InstrB(formData,Divider & bncrlf & strTemp) 5 Dim arrayTemp() 6 If intFlag0 Then7 Redim arrayTemp(4)8 dataStart=intFlag+LenB(Divider & bncrlf & strTemp) 定位到第1个字符 9 dataend=InstrB(datastart,formdata,bncrlf)-2
56、 定位到最后1个字符 10 dataLen=dataend-datastart+1 返回要取信息的长度 11 arrayTemp(0)=MidB(formdata,datastart,datalen) 返回文件路径 12 arrayTemp(0)=BinaryToString(arrayTemp(0) 转换为文本字符串13 arrayTemp(1)=Mid(arrayTemp(0),InstrRev(arrayTemp(0),)+1)返回文件的扩展名,其实只要从文件名称中分析出文件扩展名即可 14 arrayTemp(2)=Mid(arrayTemp(1),InstrRev(arrayTemp
57、(1),.)+1)下面获取文件的MIME类型 15 temp=dataend 记住当前位置 16 datastart=temp+18 定位到第1个字符 17 dataend=InstrB(datastart,formdata,bncrlf & bncrlf)-1 定位到最后1个字符 18 dataLen=dataend-datastart+1 返回要取信息的长度 19 arrayTemp(3)=MidB(formdata,datastart,datalen) 返回MIME类型 20 arrayTemp(3)=BinaryToString(arrayTemp(3) 转换为文本字符串 21 tem
58、p=dataend 下面获取文件大小 22 datastart=dataend+5 定位到第1个字符 23 dataend=InstrB(datastart,formdata,divider)-3 定位到最后1个字符 23 arrayTemp(4)=dataend-datastart+1 返回文件大小 25 Else 26 Redim arrayTemp(0) 27 arrayTemp(0)=0 28 End If 下面返回函数值 29 GetFileInfo=arrayTemp30 End Function下面是将上传文件保存到指定的文件夹中的函数:1 Function SaveToFile
59、(FormName,SaveFilePath,OverWriteFlag)2 Dim strTemp,dataStart,dataEnd,dataLen,temp,intFlag,filepath,filename3 strTemp=StringToBinary(Content-Disposition: form-data; name= & FormName & ; filename=)4 intFlag=InstrB(formData,Divider & bncrlf & strTemp) 5 Dim arrayTemp() 6 If intFlag0 Then 因为后面要用到文件的名字,所
60、以首先返回文件的名字 7 dataStart=intFlag+LenB(Divider & bncrlf & strTemp) 定位到第1个字符 8 dataend=InstrB(datastart,formdata,bncrlf)-2 定位到最后1个字符 9 dataLen=dataend-datastart+1 返回要取信息的长度 10filepath=BinaryToString(MidB(formdata,datastart,datalen) 返回文件路径 11filename=Mid(filepath,InstrRev(filepath,)+1)从当前位置找到两个回车换行符,也就是文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度智能停车系统车库交易合同2篇
- 二零二五年度家政服务与家庭旅游策划合同3篇
- 二零二五年度叉车维修保养与维修设备租赁合同2篇
- 2025年度综合体物业房使用及公共设施维护协议3篇
- 二零二五年度大棚养殖废弃物资源化利用合作协议2篇
- 二零二五年度文化旅游项目借款及旅游资源担保服务协议3篇
- 二零二五年度保障性住房置换合同范本
- 二零二五年度ISO9001质量管理体系认证咨询与实施合同3篇
- 二零二五年度加油站油品供应与信息化建设合同3篇
- 船舶管系课程设计
- 女装行业退货率分析
- 领导沟通的艺术
- 纯视觉方案算法
- 道士述职报告
- 绿色贷款培训课件
- 2024年七年级语文上学期期末作文题目及范文汇编
- 云南省昆明市五华区2023-2024学年九年级上学期期末英语试卷+
- 2023年生产运营副总经理年度总结及下一年计划
- 2023年中考语文标点符号(顿号)练习(含答案)
- 施工图审查招标文件范文
- 布袋式除尘器制造工序检验规定
评论
0/150
提交评论