于基asp的网上聊天系统的设计与实现-本科论文已通过评审--本科毕业设计.doc
-
资源ID:92892139
资源大小:300KB
全文页数:31页
- 资源格式: DOC
下载积分:9金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
于基asp的网上聊天系统的设计与实现-本科论文已通过评审--本科毕业设计.doc
中国石油大学(华东)现代远程教育毕业设计(论文)题 目: 基于ASP的网上聊天系统的设计与实现 学习中心: 山东济南函授站 年级专业: 网络11秋专升本 学生姓名: 谯立柱 学 号:11616145008 指导教师: 徐功文老师 职 称: 教授 导师单位: 中国石油大学(华东) 中国石油大学(华东)远程与继续教育学院论文完成时间: 2013 年 5 月 20 中国石油大学(华东)现代远程教育毕业设计(论文)任务书发给学员 1设计(论文)题目: 2学生完成设计(论文)期限: 年 月 日至 年 月 日 3设计(论文)课题要求: 4实验(上机、调研)部分要求内容: 5文献查阅要求: 6发 出 日 期: 年 月 日 7学员完成日期: 年 月 日指导教师签名: 学 生 签 名: 摘 要随着网络的逐渐普及,以及网络技术的不段发展,人们通过网络进行交流的方式变得多样化。网络聊天室便是其中之一。聊天室系统的即时交流方式满足了网络中多人同时聊天交流的需要,使得较多的人在同一个聊天页面进行交流变得方便,简单。本设计所完成的网络聊天室具有常用聊天室的所有功能,包括多人同时在线聊天、两人间的私密聊天、在发言的时候能够发送表情及图片,还能显示在线用户列表,同时,为了管理聊天室中的用户,设计了用户注册登陆功能,用户管理功能以及用户留言功能。并且,加入了分屏、清屏、屏蔽的辅助功能,增加了聊天室的操作性。本文首先介绍了聊天室系统所使用到的一些关键技术,接着介绍了该系统的设计思路和需求分析,然后是对系统的详细介绍,包括系统中创建的数据库以及系统的具体功能介绍。关键词:聊天室;B/S模式;私聊;留言 目 录第1章 引 言11.1 项目开发背景11.2 项目开发的目的11.3 项目提出的意义11.4 系统的开发方法2第2章 系统主要技术分析及聊天系统分析32.1 ASP技术32.2 数据库技术32.3 加密技术42.4 需求分析42.5 系统总体结构52.6 模块功能分析52.7 系统总体规划7第3章 系统数据库设计3.1 数据库概念模型73.2 数据库各表设计73.3 数据库链接的实现83.4 数据库的设计93.5 实现数据库之间的联系93.6 数据库的连接方法9第4章 系统功能具体实现104.1 用户注册登陆模块10 4.1.1 用户注册10 4.1.2 用户登陆11 4.1.3 用户密码修改124.2 用户发言134.3 聊天内容显示154.4 在线用户列表显示184.5 管理功能194.6 辅助功能区20结束语23致 谢24主要参考文献2526第1章 引 言1.1项目开发背景随着网络的逐渐普及,以及网络技术的不段发展,人们通过网络进行交流的方式变得多样化。网络聊天室便是其中之一。在网站建设迅速发展的今天,基于B/S模式的ASP网络聊天室已经成为较多网民认可的一种聊天交流平台,各种专家座谈、在线答疑室,实质就是聊天室。聊天室系统的即时交流方式满足了网络中多人同时聊天交流的需要,使得较多的人在同一个聊天页面进行交流变得方便,简单。1.2项目开发的目的 本聊天室的开发目的就是为人们在网络中提供一个即时的网页交流平台,通过这个平台,人们可以随意发言和观看大家发言的内容。其中的一大特点就是聊天室中的用户可以选择发言的对象,进行一对一的私聊,别人是无法看到两人间对话的内容的。1.3项目服务器结构及数据库类型本系统开发采用B/S(浏览器/服务器)结构,参考网络中正在使用的大型聊天室的架构、分析聊天室可实现功能,结合本次设计的相关要求,进行开发设计并写出需求分析说明书。具体开发环境:使用windows2003作为服务器运行平台,同时搭建系统运行平台IIS、DNS域名服务器;以ASP语言作为开发语言,主要研究HTML、JAVA SCRIPT、VB SCRIPT以及SQL数据库语言;后台数据库使用SQL SERVER或系统自带的ACCESS数据库;开发工具包括DREAMAVER、PHOTOSHOP、IE、SQL SERVER等。1.4项目提出的意义 Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。网上聊天系统作为一种方便消费者与人们之间联系的实用系统便应运而生。网上聊天系统是为人们进行交流和联系提供的一个平台。通过提供完善的网上聊天系统的管理,可以达到增进人们与消费者之间、消费者与消费者之间的交流和联系的目的。第2章 系统主要技术分析及聊天系统分析2.1 ASP技术ASP技术是一种类似HTML(Hypertext Markup Language超文本标识语言)、Script与CGI(Common Gateway Interface通用网关接口)的结合体,简单的讲它是一种运行于服务器的脚本语言,但是其运行效率比CGI更高、程序编制也比HTML更方便且更有灵活性,程序安全性及保密性也远比Script好。其特点归纳如下:1.ASP可以和HTML或其他脚本语言(VB Script与Java Script)互相嵌套。2.ASP是一种在Web服务器端运行的脚本语言,因此,程序代码完全保密。3.ASP以对象为基础,因此可以使用ActiveX控件继续扩充其功能。4.ASP内置ADO组件,因此可以轻松地存取各种数据库,大大缩短了程序开发时间。5.ASP可以将运行结果以HTML的格式传送至客户端浏览器,因此ASP可以适用于各种浏览器。下面来介绍一下ASP的几个内置对象:Request对象,我们知道HTTP通讯协议是一种请求与响应(Request/Response)的通讯协议,因此通常由客户端向Web服务器提出请求,Web服务器才会响应信息。因此在ASP中,特别将“客户端提出的要求”与“Web服务器响应的信息”等动作封装成Request对象与Response对象。换而言之,Request对象通常包含了用户端的相关信息,如浏览器的种类、表头信息、表单参数及cookies等等。Response对象,每一种程序语言或开发工具一定都有与用户沟通的界面或函数,ASP也不例外。在ASP中负责将信息传达到用户的对象就是Response对象。Server对象,Server对象允许用户取得服务器提供的各项功能,例如,Server对象的CreateObject方法允许客户端用户建立一个ActiveX Server组件实例,其所建立组件实例会随着服务器端完成ASP网页的处理而自动被释放。如果希望此对象实例可以跨多个ASP网页,就要用到Session对象保留该组件实例,直到Session对象的运行时间到了,或是在其他ASP网页调用Session对象的Abandon方法,此组件实例才会被释放。Session对象,Session对象在ASP程序编写中占了相当重的份量,由于网页是一种无状态的程序,因此几乎无法知道用户的浏览状态。必须通过Session对象记录用户的相关信息,以供用户再次对此Web服务器提出要求时作确认,例如,在某些特定的网页中,常需要用户输入确认的账号和密码,假如这些身份确认的结果无法保留,那岂不是每一个网页都需要重新输入一次密码。换而言之,每一个Session的用户,Web服务器均会自动的为它们建立一个Session。必须说明,Session对象只能适用于具备Cookie功能的浏览器。2.2 数据库技术在基于微软IIS/PWS的网络平台上,通过服务器端运行的ASP程序来访问后台数据库,是一种最常见的模式了。而对于小型的数据库应用需求,微软的Access数据库应该是与ASP程序配套使用的首选。由于Access数据库的ODBC驱动程序支持的SQL指令全,执行效率高,所以Access后台数据库+ASP服务器端程序+客户端IE浏览器,是一个精练实用高效的组合模式。利用SQL语言,可以查询和管理自已的数据库。它由大约30条命令构成,但实际只需要少数的几个命令就可以完成相当多的工作,常用的SQL查询命令有:Select、Insert、Delete、Update等。2.3 加密技术本设计在用户密码和密码问题答案的存储时使用了MD5加密算法来保护数据库中的重要数据。MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位的散列值。本设计在保存会员密码和密码提示问题答案时都先将传递的数据通过MD5加密后才存入数据库,故在数据库中只能看到已经加密的信息,保证了信息的安全。又因为该算法是单向加密的,没有解密算法,然而MD5算法对同一段明文加密得出的密文是唯一且相同的,相当于这段数据的数据指纹,所以当有数据要和保存的数据进行比较时,便可通过将需要对比的数据进行MD5加密后再对比。2.4 需求分析本系统采用B/S模式设计,开发目的主要是在网络中提供一个安全的供多人休闲聊天交流的平台,同时借助开发此系统提高自己的独自设计能力。系统运行环境:本系统是在windows 2003 server操作系统下,搭建IIS系统运行平台,使用DREAMWEAVER和Frontpage作为开发工具开发的,数据库使用ACCESS 2003。运行本系统,需要满足如下要求:(1) 服务器端配置:Windows 2000 ServicePack 4.0 以上操作系统,Internet 信息服务器 5.0(IIS 5.0)Microsoft Offices ACCESS 2000 以上版本(2)客户端要求配置Windows 2000 ServicePack 4.0 以上操作系统,IE浏览器5.0及以上版本2.5系统总体结构根据聊天室的主要功能分析,本系统一共分为七大功能模块:用户注册登陆模块、发言功能模块、聊天内容显示功能模块、显示用户列表模块、辅助功能区模块、管理功能模块以及用户密码修改功能模块。其中辅助功能区包括用户举报模块以及分屏等操作功能,功能结构图如图2-1所示。聊天室系统用户注册登陆模块分屏功能用户密码修改模块用户发言模块聊天内容显示模块在线用户列表显示模块辅助功能区模块管理功能模块清屏功能屏蔽功能用户举报图2-1 功能结构图2.6模块功能分析(1)用户注册登陆模块完成新用户注册,将注册信息添加到数据库中,用于用户登陆验证;经过登陆验证的用户,方可进入聊天室进行聊天交流。(2)用户密码修改模块当用户不小心忘记或记错了自己的注册密码时,可通过修改密码,重新设定登陆密码,其中要经过密码提示问题的验证,顺利通过才能修改密码。(3)用户发言模块除了提供发言内容的输入外,还应能显示当前用户正在对谁发言、可选择发言的颜色和发言的表情。发言的颜色和发言表情通过下拉式组合框实现。发言内容书写完毕后,通过单击“提交”按钮或按回车,实现聊天内容的显示。(4)聊天内容显示模块主要完成将每个用户的发言的内容显示在页面中,让这些内容对每个登陆用户均可见(除开私聊内容),同时还能及时显示各用户的发言内容,以便始终能显示出最新的发言内容。(5)在线用户列表显示模块该页面实现在线人数和在线用户的统计,并将在线用户依次显示出来。每个显示用户应设置为一个超链接,当单击用户名时,实现将发言区中的发言对象设置为该用户。(6)辅助功能区模块提供诸如分屏、清屏、刷新、屏蔽、显示名单的操作功能。同时为用户提供了举报的流言功能。(7)管理模块系统管理员可以查看用户注册信息以及用户留言,并对其进行管理。2.7系统总体规划聊天室系统的总体流程由用户登陆开始,通过验证后,用户便可进入聊天页面进行交流聊天,同时,系统会将新登陆用户的用户名添加进在线用户列表,即时更新。总体流程图如图2-2所示。用户登录统计在线人数、在用户列表和发言数组中添加新用户和公告信息。进入聊天主页面注册用户?是否开始退出图2-2 系统总体流程图第3章 系统数据库设计3.1 数据库概念模型根据系统功能和和流程所需数据要求,可以确定数据库中数据项和数据结构,其E-R图如图3-1所示。表baseuser表 投诉验证用户名密码问题答案性别emaillevesdatedatequestionIDUsername1username图3-1 数据库E-R图E-R(Eneity-Relationship Approach)图是最常用的概念模型表示方法,也是数据库的核心和基础,它是按用户的观点来对数据和信息建模的。3.2 数据库各表设计对于聊天室系统,所需的数据库表有baseuser和投诉两张表。Baseuser表用于存放注册用户的基本信息,其具体字段设计如表3-2所示。表3-2baseuser表字段字段名数据类型长度是否允许为空说明Name文本16否用户注册名Password密码50否用户登陆密码MD5值问题文本50否密码提示问题答案密码50否密码提示问题答案MD5值Email文本50否用户邮箱性别文本2否用户性别Leves文本10否用户权限Date时间10否注册时间投诉表用于存放用户在聊天过程中向管理员反应的举报信息,具体字段设计如表3-3所示。表3-3 投诉表字段字段名数据类型长度是否允许为空说明ID自动编号Username文本16否投诉人用户名Username1文本16否被投诉人用户名Qusetion文本50否投诉描述Date时间10否投诉时间3.3 数据库链接的实现数据库连接操作是一个相当频繁的操作,在ASP的数据库编程中,connection对象是我们不可能离开的一个对象,该对象是ADO对象模块中的一个专门打开和关闭数据库连接的对象,在对数据库进行任何的操作,比如更新记录,插入,删除,检索等,都必须以connection对象的建立为前提。形象地来说,connection对象就是程序与数据库沟通的管道,所有对数据库的操作,都必须经过它,因此,本系统首先建立一个connection对象的实例变量,然后才能在它的基础上建立Recordset对象实例来操作数据库。这里首先利用connection对象的属性ConnStr 设置数据库的连接方式,使用的是Access OLE DB驱动程序。使用server.createobject方法建立connection对象的实例变量conn,使用connection对象的Open方法打开数据库连接,核心代码如下:connstr="DBQ="+server.mappath("userdata.mdb")+"DefaultDir=;DRIVER=Microsoft Access Driver (*.mdb);"set conn=server.createobject("ADODB.CONNECTION")conn.open connstr其中,还使用了server对象的Server.MapPath(Path)方法,作用是将(path)指定的虚拟路径转换为实际路径,大大提高了本系统的移植性。3.4 数据库的设计 用户的管理:包括合法系统用户的注册,登录,退出等功能。. 设计要求是: 1 activetable表 记录当前在线的用户。 2 message 表 记录当前用户所留的信息。 3 user 表 当前所有注册用户的信息。3.5 实现数据库之间的联系 数据库之间的关系指明两个库之间共享一个共同的关键字值。一个连接是指一种虚拟的表,这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的,关键字段用于在相互连接的不同表中查找匹配的记录。一个更高级的连接形式称为自连接。这种连接是指一个表被连接到它自己的一个字段,或在不同的纪录中由重复数据的组合字段。数据库中有三种不同类型的关键字:主关键字、组合关键字和外关键字。在表中使用的关键字类型用于描述库表示什么以及在数据库中如何与其它的库建立关系。3.6 数据库的连接方法 1.Access数据库的DSN-less连接方法: set adocon=Server.Createobject("adodb.connection") adoconn.Open"Driver=Microsoft Access Driver(*.mdb);DBQ="& _Server.MapPath("数据库所在路径") 2.Access OLE DB连接方法: set adocon=Server.Createobject("adodb.connection") adocon.open"Provider=Microsoft.Jet.OLEDB.4.0;"& _"Data Source=" & Server.MapPath("数据库所在路径")第4章 系统功能具体实现聊天室的功能主要是实现用户的发言和观看大家发言的内容,发言界面和聊天内容需要显示在同一屏界面中,以方便发言和观看,另外,通常还需要显示当前在线的人数和用户列表,以方便选择对谁发言。用户书写发言的界面、聊天内容的显示、用户列表的显示均需要通过单独的页面来实现,为了能在同一屏界面中同时显示多个页面的内容,此时需要利用带框架集的页面来实现。框架集是多个框架的集合,每一个框架可显示一个页面的内容,在同一屏中需要显示多少个页面,就需要创建一个具有多少个框架的框架集来实现,整个框架集最后存盘形成一个页面,以后浏览该页面时,各框架集中的内容就会自动显示出来。4.1用户注册登陆模块 4.1.1用户注册在聊天室首页,单击“用户注册”,便可进入用户注册页面,如图4-1所示图4-1 用户注册页面用户进入注册页面后,根据要求,填写表单中各项数据,单击确定后,系统通过表单传递的“POST”方法,将输入的内容传递给后台处理页面usersave.asp进行写入数据库处理。其中,在进行表单传递的时候,系统还调用了check()函数对填入表单的数据进行检验,一旦发现表单中有一个数据项不符合要求,系统便会弹出出错信息,提示用户重新填写。在后台处理页面中,系统先定义对应于表单各数据项的变量,利用ASP内置的Request对象,将用户填入表单的数据赋给这些变量,在存入数据库的时候直接将变量值添入数据库即可。对从表单得到的“密码”、“密码提示答案”的关键数据,在存入数据库的时候,系统还调用了MD5()函数(MD5加密程序),对数据进行加密处理,这样,存入数据库中的“密码”、“密码提示答案”字段的值将以密文形式存放,提高了用户信息的安全性。当表单数据通过审核并对需要加密的数据进行加密后,后台处理页面便创建一个Recordset对象实例来访问数据库的用户信息表,实现代码为set rs=server.createobject("adodb.recordset")使用Recordset对象的BOF和EOF属性来查看此用户名是否已被注册,如果用户名已被注册,则以Response对象的Redirect方法提示用户重新注册,保证了用户名的唯一性。若条件为假,则将表单数据同加密数据写入用户注册表中,完成注册,实现代码为sql="select * from user where 用户名='"&name&"'"rs.Open sql,conn,1,3if not rs.eof or not rs.bof thenresponse.write "<br><br><p align=center><font color=red>该用户名已被注册,请重新注册其他用户名!</font></p>"else rs.addnew页面提示注册成功后,用户便可从聊天室首页进行登陆,进入聊天室。 网上聊天系统是为人们之间进行交流和联系提供的一个平台。通过提供完善的网上聊天系统服务,可以达到增进彼此之间的了解,增进人与人之间的感情交流。4.1.2用户登录用户在聊天室登录界面填入正确的注册信息,单击登录,系统将自动把用户填入的“帐号”、“密码”于数据库中存放的用户注册信息进行比对验证。系统进行用户身份验证时,首先利用Request对象,将用户填入的“帐号”(即用户名)、“密码”传递给预先定义的变量,再使用Select语句,将变量值与用户信息表进行比对sql="select * from user where password='"&password&"' and name='"&username&"'"其中,由于系统在添加用户信息进入数据库表的时候,对“密码“字段进行了MD5加密处理,存放在数据库中的密码是经过加密后的MD5值,因此,在验证用户密码是否符合时,系统把用户输入的密码计算成MD5值,再与存放在系统中的密码MD5值进行比较,在整个过程中,系统都不知道用户的密码具体时多少。这里,同样使用了recordset对象的BOF和EOF属性来查看是否有该用户的注册信息,判断语句与注册中的判断语句相同,不同的是判断结果若为真,说明该用户为聊天室注册的合法用户,这时,以Response对象的Redirect方法跳转到聊天主页面,Response对象的Redirect方法是实现页面的跳转,使当前页面跳转到指定的页面。在用户登录进聊天主页面的同时,系统将通过验证的用户名以及用户信息表中对应用户名的“leves”值传递给特别定义的session对象session(“user”)以及session(“leves”)。session("user")=usernamesession("leves")=rs("leves")Session对象的用途是记录浏览器端专用的变量,将用户名和该用户对应的权限存放在session对象中,便可在后面的聊天页面和在线用户列表页面直接读取浏览器端的变量值,显示出用户名和用户权限所具有的功能,本系统中,主要是管理员的管理功能。经过上述的用户验证和数据传递,系统跳转到聊天页面,此时用户便可在聊天主页面进行聊天交流了。 4.1.3 用户密码修改当聊天室注册用户不小心忘记了注册密码或者把密码记错,用户将无法再次进入聊天室,也就无法与聊得来的朋友继续聊天。针对这种情况,系统设置了用户密码修改功能,以便系统中合法的注册用户在忘记密码后,能重新设置新密码来登录系统,以避免用户无法登录。在聊天室首页,单击“忘记密码”,进入用户密码修改页面,如图4-2所示图4-2 密码修改页面在修改密码的第一个页面中(findpass.asp),系统要求用户填入需要修改密码的用户名,单击“确定“,系统通过表单的post方法,将输入的用户名传递给下一个页面passque.asp,系统在转到该页面的同时,会对用户输入的用户名进行验证,看是否是聊天室的合法注册用户,验证方法与用户登录的验证方法相同。验证通过后,打开passque.asp页面,在该页面中,修改密码的用户需要根据页面中显示的密码提示问题,填入正确的密码提示问题答案,即在注册时用户所填写的密码提示问题答案。设计这个页面,是为了更谨慎地验证用户的身份,以避免别人冒名修改密码,致使正常用户无法登录。在passque.asp页面中,系统利用request对象把findpass.asp页面传递的用户名存在name变量中,接着查询用户信息表符合用户名等于name的记录,将该记录所对应的“问题“用response.write方法显示在页面中name=Request("name")set rs = server.createobject("adodb.recordset")sql="select * from user where 用户名='"&name&"'"用户根据页面显示的密码提示问题填入相应的答案,单击“确定”,将表单内容传递给pass.asp页面。在页面后台,系统会首先将得到的答案与问题在系统数据库中进行查询,只有在问题和答案在一条记录中同时匹配的时候,页面的内容才会显示,否则,系统提示出错,返回上一页面。这里由于数据库中存放的“答案”项是其MD5值,所以在进行密码提示问题答案对比的时候,同样是比较该数据的MD5值sql="select * from user where 用户名='" & name & "' and 答案='" & answer & "'"rs.open sql,conn,1,3if rs.eof and rs.bof then%><script language=vbscript>alert ("密码提示答案错误,请返回验证!")location.href = "javascript:history.back()"在系统经过用户名、密码提示问题及密码提示问题答案的双重身份验证后,用户便可进入密码修改页面。在页面中,用户需要填写新的登录密码来替换原来丢失的密码。在进行用户密码替换时,使用数据库的update语句来修改数据库中的密码字段。系统首先创建一个Connection对象实例连接数据库,以便对数据库的数据进行修改。在打开Connection对象实例后,利用该对象的execute方法执行update语句,完成对数据库数据的修改。updatesql="update user set 密码="'&newpwd&'"set rs=server.createobject("ADODB.Connection")rs.open rs.execute updatesql 4.2 用户发言进入聊天主页面后,用户便可在主页面下方的发言界面设计书写自己想要说的话,以及想对谁说,同时,系统还提供了发言字体颜色选择、插入表情、图片的功能,如图4-3所示,让用户的聊天更有趣味。图4-3 用户发言界面用户发言界面采用ASP表单模式设计,在表单中,用户根据发言对象、发言内容、以及发言颜色填写发言数据,填写完成后,单击“提交”或按回车键,将发言内容转入后台处理。在处理发言数据的时候,为了避免用户发言为空以及发言内容与上次发言内容重复的情况发生,系统定义了一个send()函数,用来检验用户的发言。在send()函数中,系统定义了msg和post_msg 2个变量,用来存放本次发言内容和上次发言内容,在调用函数的执行过程中使用if语句判断上述2中情况是否发生,如果出现发言为空或内容重复,系统便弹出错误提示信息:“请输入发言或动作”;“请不要重复发言”。if (msg='')alert('请输入发言或动作!');document.af.msg.focus();return falseif (msg=post_msg)alert('请不要重复发言!');document.af.msg.focus();return false在发言界面中的字体颜色、动作、表情、图片均采用下拉式列表框的方式供用户选择,其中,各列表框的name属性为sayscolor、addsing、addsays、tu,以便在获得用户发言时根据这些列表框的name取得相应的value值,显示出来。<select name='sayscolor' onchange="document.af.msg.focus();bs(document.af.sayscolor.value)" style='font-size:12px'><select name='addsign' onchange="document.af.msg.value=(this.value);" style='font-size:12px'><select name='addsays' onchange="document.af.msg.focus();" style='font-size:12px'><select name='tu' onchange="document.af.msg.value=(this.value);" style='font-size:12px'>用户发言的具体流程图如图4-4所示用户发言提交发言显示发言内容显示提示信息,中止表单提交发言内容是否为空是否与上次内容相同是是否否开始结束图4-4 用户发言流程图4.3聊天内容显示整个聊天主页面中,占有面积最大的便是聊天内容显示区。如图4.1.5所示在这个区域,分了上下2个空间,上面的用来显示聊天室的所有发言内容,下面用来显示与当前使用聊天室的用户相关的内容,如系统提示信息、用户自己的发言以及其他用户发来的密语。这个区域可以通过后面介绍的分屏操作实现一个显示区和两个显示区的切换。图4-5 聊天内容显示区聊天内容显示区可以显示最近50条发言,为了保存最近的50条发言内容,系统定义一个具有50成员的一维数组sd_init;为了对应保存每条发言是谁对谁发的,需定义一个towho(50,2)的二维数组,为了直观,使用时数组下标均从1开始。由于数组和变量的作用域仅限于当前页面,为了实现跨页传递数据和对所有登录用户均有效,使得所有用户都能看到聊天室里的发言内容,为此,需要将数组和所用到的相关变量的值赋给对应的一组Application对象来保存。Application对象的用法与Session对象基本相同,利用Application对象所创建的变量,可以在整个应用中被所有用户共享和访问。一个用户修改或设置了改类变量的值后,对于其他所有用户,也是可见的。从而可见,利用Application对象所创建的变量,具有最大的作用域,有时也称为Application(应用程序)级变量。聊天内容显示的具体流程图如图4-6所示。获取在线用户列表数从表单中获得用户