基于Web的聊天室系统设计与实现

上传人:无*** 文档编号:126781994 上传时间:2022-07-29 格式:DOC 页数:32 大小:593KB
返回 下载 相关 举报
基于Web的聊天室系统设计与实现_第1页
第1页 / 共32页
基于Web的聊天室系统设计与实现_第2页
第2页 / 共32页
基于Web的聊天室系统设计与实现_第3页
第3页 / 共32页
点击查看更多>>
资源描述
中国石油大学(北京)现代远程教育毕业设计(论文)基于Web的聊天室系统设计与实现 2009年04月16日基于Web的聊天室系统设计与实现摘 要Web聊天室,是 Web 站点上,网友们进行交流的秘密武器,注重的实时的交流、沟通、讨论,不像BBS一样,需要等待盖楼的折磨;聊天室,其实就是多人共同使用的 CGI 程序。程序将每个人输入的字符串,依系统接收完成的时间整理过后,再送给各个用户。而 Web 聊天室和 BBS 的聊天室不同的地方是,聊天室可以每收到一句话,就马上分送给每位在聊天室的网络用户;Web 由于 CGI 程序不能像 BBS 的 telnet 一直连接,Web CGI 必须以最快的速度将信息送出,然后结束连接。WEB技术的广泛应用,对整个世界政治、经济、文化等各方面产生了十分广泛和深远的影响。它奇迹般地崛起、爆炸般地扩容,令全世界瞩目。WEB互联网技术之所以能在如此短的时间内获得社会各方面的认可,并在全球范围内推广应用是因为互联网拥有庞大的信息资源、给人类提供全新的交往方式、存在着巨大的商机、虚拟现实技术 的广泛应用等等,是促进互联网发展的重要因素;其中交互性和实时性尤为重要,选择此课题的动机和意义,就是为了更加深入的了解WEB CGI程序的运行,同时对web应用程序有一定了解和掌握,体验WEB互联网技术的飞速发展;关键词:聊天室;WEB CGI程序;互联网;实时交流目 录第一章 引 言11.1 Web聊天室的引入11.2系统开发的意义11.3 系统开发技术路线2第二章 可行性分析32.1 经济可行性32.2 技术上的可行性3第三章 系统技术简介43.1 PHP技术43.2 AJAX简介53.3 ORACLE技术63.4 XML技术6第四章 系统设计84.1 聊天室角色设计84.2 聊天室功能设计84.3 系统数据库设计9第五章 系统模块和系统流程125.1 系统模块125.2 系统流程13第六章 系统实现146.1 在线注册146.2 匿名聊天页面156.3 注册用户聊天模块166.4 主持人聊天模块176.5 嘉宾聊天模块176.6 管理员聊天模块18第七章 关键代码207.1 AJAX定义207.2 注册模块217.3 聊天模块237.4 XML解析模块25第八章 总 结28参考文献29第一章 引 言1.1 Web聊天室的引入随着信息流量的日益加大,计算机网络技术得到飞速发展,各类网站不断涌现出来。而最受青睐的应属具有动态效果、实施性质的相互交流的的网络平台,其页面的内容使用的不仅仅是标准的HTML代码。而是加入了各种“交互性”。 将浏览器作为客户端界面,这将是今后WEB发展的大事所趋。 如何与别人更好地交流, 是当前人们普遍关心的问题。人们通过网站可以展示产品,发布最新动态,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等。其中网上聊天系统是构成网站的一个重要组成部分,为人们之间进行交流和联系提供的一个平台。1.2系统开发的意义Internet是目前世界上最大的计算机互联网络它遍布全球,将世界各地各种规模的网络连接成一个整体。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以在远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。网上聊天系统作为一种方便消费者与人们之间联系的实用系统便应运而生。网上聊天系统是为人们进行交流和联系提供的一个平台。通过提供完善的网上聊天系统的管理,可以达到增进人们与消费者之间、消费者与消费者之间的交流和联系的目的。1.3 系统开发技术路线系统的开发采用当前最为火爆的技术 - PHP语言,进行开发;系统测持久性设计采用XML+ORACLE技术;前端与数据存储之间的交互采用 PHP+AJAX来进行;系统运行平台采用 LINUX,Web端服务器为APACHE;第二章 可行性分析2.1 经济可行性主要是对系统的经济效益进行评价,由于本系统运行的平台对配置并不是很高,实现起来也比较方便,可以在资源上、人力上节约很大的开支,开发经费对于个人/单位在经济上是可以接受的,并且本系统实施后可以显著提高工作效率,有助于完全实现信息的实时交流。提高网站的PV,为网站带来更大的效益;所以本系统在经济上是可行的。2.2 技术上的可行性技术上的可行性分析主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。该管理系统采用了当前流行的Browser/Server模式进行开发。三层的Browser/Server体系结构具有许多传统Client/Server体系结构不具备的优点,而且又紧密的结合了Internet/Intranet技术,是技术发展的大势所趋,它把应用系统带入了一个崭新的发展时代。数据库服务器选用ORACLE数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能,并且有益于系统的扩展。它的灵活性、安全性和易用性为数据库编程提供了良好的条件。因此,系统的开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。PHP、XML、ORACLE、AJAX等技术现在说来,已经是相当的成熟,已经有海量的网站采用此类技术进行了开发,PHP网站已经非常常见,AJAX技术也有大量的应用,所以在技术上来说,也是完全可行的;第三章 系统技术简介3.1 PHP技术PHP是“PHP:Hypertext Preprocessor”的缩写,即“超文本预处理器”。PHP是一种功能强大,并且简便易用的脚本语言。PHP是一种简单、轻便的服务器端脚本语言。PHP最初是作为一个快速、实用的工具包出现的。1994年,为了在自己的网站上增加一个小巧而实用的访客追踪系统,Rasmus Lerdorf编写了PHP的雏形程序。这是一个用Perl封装的简单工具。由于使用效果并不理想,Rasmus又用C语言重写了这个工具;PHP发展至今,已经从最初的PHP/FI发展经历PHP2.0、PHP3.0、PHP4.0,目前已经更新至PHP5.0;它的核心是第二代Zend引擎,并引入了对全新的PECL模块的支持。PHP5的最大特点是引入了面向对象的全部机制,并且保留了向下的兼容性。程序员不必再编写缺乏功能性的类,并且能够以多种方法实现类的保护。另外,在对象的集成等方面也不再存在问题。使用PHP5引进了类型提示和异常处理机制,能更有效的处理和避免错误的发生。如同ASP具有Windows自己的开发平台一样,Zend也为PHP设计了全新的开发环境Zend Studio。这是一款集程序调试、系统发布以及开发环境为一体的PHP开发软件。这将大大简化PHP开发过程,并且缩短相应的测试周期。另外,Zend还将与IBM公司合作推出集成Zend IDE特性的Eclipse软件供大家使用。PHP还具有优秀的平台兼容性。PHP源于UNIX系统平台,尤其是PHP、MySQL、Apache和Linux组合,备受PHP爱好者的欢迎。不仅如此,PHP在Windows系列操作系统上也有出色的表现。其良好的程序界面、语言易用性等特点吸引了微软的开发人员。目前,有消息称未来的Windows.NET开发环境将集成PHP,这也意味着PHP的用户群将日益壮大。PHP的特性:开放的源代码:所有的PHP源代码事实上都可以得到。PHP是免费的。基于服务器端:由于PHP是运行在服务器端的,即使再多的用户,再复杂的程序也不会影响运行的速度。跨平台:PHP可以运行在UNIX、LINUX、WINDOWS下。嵌入HTML:因为PHP可以嵌入HTML语言,所以学习起来并不困难。简单的语言:PHP坚持脚本语言为主,与Java以C+不同。效率高:PHP消耗相当少的系统资源。图像处理:用PHP动态创建图像3.2 AJAX简介AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然後返回一个新的网页。这个做法浪费了许多带宽,因为在前後两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。3.3 ORACLE技术Oracle应用产品包括财务、供应链、制造、项目管理、人力资源和市场与销售等150多个模块,荣获多项世界大奖,现已被全球近7600多家企业所采用。由于在电子商务方面的杰出表现,Oracle公司在美国Mongan Stanley公司最新公布的权威性全球企业1000强中,从去年的第122名一跃成为第13名,成为全球第二大独立软件公司和最大的电子商务解决方案供应商。目前, Amazon和Dell等全球十个最大的Internet电子商务网站、全球十个最大的B-to-B网站中的九个、93%的上市.COM公司、65家“财富全球100强”企业均不约而同地采用Oracle电子商务解决方案。发展至今,Oracle 已经发展至Oracle 11g;11g数据库增强了Oracle透明数据加密功能,将这种功能扩展到了卷级加密之外。11g还增加了表空间加密功能,可用来加密整个表、索引和所存储的其它数据。存储在数据库中的大型对象也可以加密。在Oracle 11g中, XML DB的性能又获得很大提高,XML DB是Oracle数据库的一个组件,客户可以以本机方式存储和操作XML数据。11g增加了对二进制XML数据的支持,现在客户可以选择适合自己特定应用及性能需求的XML存储选项。3.4 XML技术XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML (Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。第四章 系统设计4.1 聊天室角色设计1、 管理员添加聊天主题; 设置聊天角色; 查看网友资料、警告、禁言、踢人;角色区分:使用不同颜色显示用户名、昵称; 2、 主持人 (可选角色)查看网友资料、警告;角色区分:使用不同颜色显示用户名、昵称; 3、 嘉宾 (可选角色)屏蔽某人发言;角色区分:使用不同颜色显示用户名、昵称;4、 会员屏蔽某人发言;角色区分:显示用户名、昵称;5、 网友屏蔽某人发言;角色区分:系统自动分配昵称;4.2 聊天室功能设计1、用户注册用户只有拥有自己的帐号才能才能登录到聊天室系统中结交朋友,畅所欲言。这就需要到聊天室注册页面进行注册。在注册页面可以注册用户名、密码等信息;约束:用户注册时,用户名不可以重复,昵称可以重复; 用户注册后,可以个性化自己的昵称,完善自己的资料; 2、群聊正常聊天,所有人都能看到每个人的发言;3、私聊个人私聊屏,展示对方对自己所说的话,其他会员、网友看不到自己的私聊内容;4、屏蔽某人发言屏蔽“某人”的发言后,自己不再看到“某人”的发言;5、查看网友资料此功能为“管理员、主持人”所特有的权利,查看会员、网友个人资料、IP等;6、警告此功能为“管理员、主持人”所特有的权利;可以对“违规”会员、网友进行警告,提示其注意其言论;7、踢人此功能为“管理员”所特有的权利;对多次“违规”警告的会员,仍然进行“违规”行为、或发表不文明言论,由管理员对其进行踢人操作;在一段时间内禁止其继续进入聊天室聊天;8、聊天内容个性化发言的个性化;A、可以自行选择字体、颜色;B、为了防止恶意发言,限制发言间隔(可能会影响系统效率,可考虑其他方案)4.3 系统数据库设计1、系统用户表:会员主表 - FSM_MEMBER_BASICNAMECODEDATA TYPELength会员IDMEMBERIDVARCHAR236会员登录名USERNAMEVARCHAR232密码PASSWORDVARCHAR232表4-12、聊天主题管理-FSM_EXP_SUBJECTNAMECODEDATA TYPELength主题IDSUBJECTIDVARCHAR28坐堂主题SUBJECTTITLEVARCHAR2100开始时间STIMEDATE结束时间ETIMEDATE主题内容SUBJECTCONTENTCLOBxml文件路径SUBJECTXMLPATHVARCHAR2300专家登陆名LOGINNAMEVARCHAR2200表4-23、名家基本信息表-FSM_EXPERT_BASICNAMECODEDATA TYPELength名家ID EXPERTIDVARCHAR28前台账号 USERNAMEVARCHAR2200显示姓名 REALNAMEVARCHAR2100性别EXPERTSEXVARCHAR22联系电话EXPERTTELEPHONEVARCHAR2100邮箱EXPERTEMAILVARCHAR2150国家/籍贯EXPERTCOUNTRYVARCHAR2200表4-34、名家角色关系表-FSM_EXP_ROLENAMECODEDATA TYPELength主键IDIDVARCHAR232名家IDEXPERTIDVARCHAR28角色值ROLENUMBER2表4-45、聊天主题相关人员表-FSM_EXP_PERSONNELNAMECODEDATA TYPELength记录编号PERSONNELRECIDVARCHAR28坐堂主题编号SUBJECTIDVARCHAR28会员编号MEMBERIDVARCHAR236人员类型PERSONNELTYPENUMBER1会员登陆USERNAMEVARCHAR2200表4-5第五章 系统模块和系统流程5.1 系统模块图 5-1系统模块图相关说明:如上图所示,系统共包括以上几个模块,用户注册/登陆模块、匿名用户聊天模块、注册用户聊天模块、主持人聊天模块、嘉宾聊天模块、管理员聊天模块;注册/登陆模块:用户注册登陆后可以享受会员级别的待遇,可以向专家提问等等权限;匿名用户聊天模块:如果用户没有注册就进入了聊天室,则他为匿名用户,聊天的过程中,会有一些操作不能进行,比如向专家提问问题等注册用户聊天模块:用户注册登陆后可以进行聊天,并且可以向专家进行提问等,提高了系统权限,使其更能充分利用系统资源;主持人聊天模块:主持人在此页面与嘉宾进行交流,活跃气氛,不至于让嘉宾一个人来跟网友进行交流;嘉宾聊天模块:嘉宾在此页面跟主持人进行交流,以及对注册用户提出的问题进行作答,实现与用户及网友的交流;管理员聊天模块:管理员的言论也将发表在这个区域,跟网友进行互动,并对会员及分会员(匿名用户)进行管理;此外,管理员还有警告、踢人的权利;可以对“违规”会员、网友进行警告,提示其注意其言论;对多次“违规”警告的会员,仍然进行“违规”行为、或发表不文明言论,由管理员对其进行踢人操作;在一段时间内禁止其继续进入聊天室聊天;5.2 系统流程图 5-2系统流程图当用户登陆进入聊天室,系统将判断其有没有登陆,如果已经登陆,则对其用户类型进行判断,根据不同的角色进入不同的聊天模块;如果没有登陆,则直接进入“匿名聊天模块”,享有一部分权利;当其向嘉宾进行提问时,提示其进行登陆,如果没有注册,则直接进入注册模块;如果网友选择注册并登陆后,则进入“注册用户聊天模块”; 第六章 系统实现6.1 在线注册用户只有拥有自己的帐号才能登录到聊天室系统中结交朋友,向名家提问问题,畅所欲言。这就需要到聊天室注册页面进行注册。在注册页面可以注册用户名、密码等信息,以完成注册。填写时要注意:A、用户名为登陆邮箱,格式必须正确,如:zhennaB、两次填写的密码必须大写六位且必须一致,否则会出错;C、注意一定要填写验证码;这里主要是为了防止滥注册行为;D、注册后系统会想您注册的邮箱发送邮件,去邮箱把你的注册用户激活,才能正常使用,这里是为了防止其他网友用您的邮箱注册或是自己注册错误等等;具体如下图所示:图 6-1密码填写错误图6-2填写正确6.2 匿名聊天页面图6-3上半部分为嘉宾谈话区域,主持人负责跟主持人进行交流;其他聊天室用户向嘉宾提问的问题,也有嘉宾在此区域回复;下部分为网友、聊天室用户管理员等等人的聊天显示区域;用户可以选择自己发言的字体颜色;可以选择对话的对象,如果想要跟某位网友交流,只要点击他的用户名就可以把他添加到对象列条里面;但是匿名用户(没有注册的网友),对象不可以为嘉宾,只有注册过的用户才能向嘉宾提问问题;清屏功能,清除目前页面内的聊天内容;6.3 注册用户聊天模块图6-4此页面的页面分布同 匿名聊天页面 ;唯一不同的地方就是,此页面内都是注册用户,也就是说都可以向嘉宾提问问题;清屏功能,清除目前页面内的聊天内容;6.4 主持人聊天模块此页面左侧内容同 注册用户聊天模块 的上部分;主持人在此页面与嘉宾进行交流,活跃气氛,不至于让嘉宾一个人来跟网友进行交流;右侧为注册用户向嘉宾提问的问题列表,主持人可以把问题选择到嘉宾页面,来完成用户对嘉宾提问的问题,嘉宾再在其页面作答;此外,主持人可以选择自己的字体颜色,还有使用清屏功能,清除目前页面内的聊天内容;如下图:图6-56.5 嘉宾聊天模块页面布局同主持人聊天模块,左侧内容同 注册用户聊天模块 的上部分;嘉宾在此页面跟主持人进行交流,以及对注册用户提出的问题进行作答,实现与用户及网友的交流; 右侧为注册用户向嘉宾提问的问题列表,嘉宾可以自己选择用户提问的问题,来进行选择作答;此外,嘉宾可以选择自己的字体颜色,还有使用清屏功能,清除目前页面内的聊天内容;如下图:图6-66.6 管理员聊天模块页面的左侧部分为嘉宾回答网友问题,和主持人和嘉宾;右侧为网友聊天屏,管理员的言论也将发表在这个区域,跟网友进行互动,并对会员及分会员(匿名用户)进行管理;管理员可以选择自己的字体颜色,还有使用清屏功能,清除目前页面内的聊天内容;此外,管理员还有警告、踢人的权利;可以对“违规”会员、网友进行警告,提示其注意其言论;对多次“违规”警告的会员,仍然进行“违规”行为、或发表不文明言论,由管理员对其进行踢人操作;在一段时间内禁止其继续进入聊天室聊天;图6-7第七章 关键代码7.1 AJAX定义Ajax简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。XMLHttpRequest是ajax的核心机制,是一种支持异步请求的技术。也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。达到无刷新的效果。但是,由于各浏览器之间存在差异,所以创建一个XMLHttpRequest对象可能需要不同的方法。这个差异主要体现在IE和其它浏览器之间。下面是一个比较标准的创建XMLHttpRequest对象的方法。function CreateXmlHttp() /非IE浏览器创建XmlHttpRequest对象 if(window.XmlHttpRequest) xmlhttp=new XmlHttpRequest(); /IE浏览器创建XmlHttpRequest对象 if(window.ActiveXObject) try xmlhttp=new ActiveXObject(Microsoft.XMLHTTP); catch(e) try xmlhttp=new ActiveXObject(msxml2.XMLHTTP); catch(ex) function Ustbwuyi() var data=document.getElementById(username).value; CreateXmlHttp(); if(!xmlhttp) alert(创建xmlhttp对象异常!); return false; xmlhttp.open(POST,url,false); xmlhttp.onreadystatechange=function() if(xmlhttp.readyState=4) document.getElementById(user1).innerHTML=数据正在加载.; if(xmlhttp.status=200) document.write(xmlhttp.responseText); xmlhttp.send(); 如上所示,函数首先检查XMLHttpRequest的整体状态并且保证它已经完成(readyStatus=4),即数据已经发送完毕。然后根据服务器的设定询问请求状态,如果一切已经就绪(status=200),那么就执行下面需要的操作。对于XmlHttpRequest的两个方法,open和send,其中open方法指定了一些参数,用来通过指定的方式来执行发送请求操作。 XMLHttpRequest是完全用来向服务器发出一个请求的,它的作用也局限于此,但它的作用是整个ajax实现的关键,因为ajax无非是两个过程,发出请求和响应请求。并且它完全是一种客户端的技术。而XMLHttpRequest正是处理了服务器端和客户端通信的问题所以才会如此的重要。7.2 注册模块用户进入注册页面,填写注册信息,然后点击提交按钮来完成注册;在这过程中我们要对用户所输入的内容进行检查,看是按要求填写,如果不符合填写要求,则返回页面,让用户来完善自己所填写的信息;用户信息通过验证后,则注册成功,同时向用户的邮箱发送验证邮件,用户通过登录邮箱来激活自己的账户;以下是相关的代码:if($mail = ) echo 邮箱不能为空!;exit();else if(!ereg(-a-zA-Z0-9_.+(0-9A-Za-z0-9A-Za-z-+.)+A-Za-z2,5$,$mail) echo 您输入的邮箱有误,请按照正确格式输入,如:admin ;exit();if(strlen($pwd)regMember($mail,$pwd,$mail,$mail);if($mid = ) echo 末知原因,注册失败!;exit();/设置cookiesetcookie(LOGIN, 1 , NULL , / , );setcookie(USERNAME, $mail, NULL, / , );setcookie(MEMBERID, $mid , NULL , / , );$member-addevent($mid);/为积分增加事件表添加记录/发送邮件require_once(ROOT_DIR.class/Member/smtpLong.class.php);/实例化smtp类,设置发信服务器,账号和密码$smtp = new smtp( 111.111.111.111 , admin ,888888);/设置发信人$smtp-setFrom(webserver );/设置收信人,多个用,隔开$smtp-setTo ($mail);/设置标题$smtp-setSubject(感谢您成为注册用户);$body=file_get_contents(include/mailTemplate/mail_reg_tpl.htm); /以找回密码为例preg_match_all (/#a-zA-z0-9+#/, $body, $matches,PREG_PATTERN_ORDER);foreach ($matches0 as $val) $str=substr($val,2,strlen($val)-4);$body=str_replace($val,$str,$body);/设置邮件内容$smtp-setBody($body);/发送邮件,在发信任务中,任何一个发送出现问题,即返回false7.3 聊天模块用户进入聊天室后,进行跟专家、网友的互动、聊天,以下是从XML文件读取信息,以及写入信息的相关代码:其中GetAJAX() 和 showInfo() 方法,用来提取聊天信息,并用AJAX技术无刷新输出到用户界面;SendAJAX()方法用来向xml提交信息,并写入到XML中;function GetAJAX()xmlhttp = new createRequest();var DataToSend = fileName= +fileName.value+&responseTime=+responseTime;alert(test);xmlhttp.open(POST,include/response.php, true);alert(back);xmlhttp.onreadystatechange = showInfo;xmlhttp.setRequestHeader(Content-Type, application/x-www-form-urlencoded;);xmlhttp.send(DataToSend); function showInfo() if(xmlhttp.readyState=4) if(xmlhttp.status=200) var responseValue=xmlhttp.responseText;if(responseValue=over)alert(聊天室已经关闭,欢迎下次光临!);deleteCookie(thisValue);window.close();else if(responseValue=kick)alert(你已经被踢出聊天室);deleteCookie(thisValue);window.close(); else /分解texteval(var arr = +responseValue);var theTime=arr.time;if(theTime!=)responseTime=theTime;Edit.innerHTML += arr.lines0.word;Down(); function SendAJAX()var filed=ChatText2.value.replace(/(s*)|(s*$)/g, );var sendDate=new Date();var sendTime=sendDate.getTime();var g=ChatText2.value;var compareTime=eval(sendTime-CommonTime)/1000);/时间比较if ( filed!= )if(filed.length100) alert(你发言的字数不能超过100);elseif(objectChat.optionsobjectChat.selectedIndex.value=username) alert(不能和自己私聊); elseif(compareTimeisAnon=$_COOKIEchatName:$this-isAnon=$_COOKIELOGINANON;if(file_exists($file) $this-file=$file;elseexit(文件不存在);$this-load($this-file);$this-xpath=new DOMXPath($this);/* *select方法,非管理员返回信息:$query,xml查询语句;$len,返回的记录条数;$arr,用户名所对应了类型;*/function select($query,$len) $this-nodeList=$this-xpath-query($query);$nodelist_len=$this-nodeList-length;if($nodelist_len)$act_len=($len=$this-nodeList-length?$this-nodeList-length:$len);else $act_len=0;$str=;if($this-debug=1) /* uxc:*/ foreach($arr as $key=$value) $str_arr.=$key.:.$value.; echo The select xml query:$query; the input len:$len; the actual display record lentth: $act_len; for($i=0;$inodeList-item($i); $id=$value-getAttribute(id); $from=$value-getAttribute(from); $to=$value-getAttribute(to); /$strip_from=strip_tags($actual_from); /$strip_to=strip_tags($actal_to); $usercolor=$value-getAttribute(usercolor); /$to=大家,对所有的人说话,否则就是私聊 if($to=大家)$mark=.$from. : ;else if($to=$this-isAnon|$from=$this-isAnon)$mark=私.$from. 对 .$to. : ; if($mark!=)if($from=管理员) $str.=$mark.$value-firstChild-nodeValue.;else $str.=$mark .$value-firstChild-nodeValue.; $last_len=$act_len-1; /把最后一条记录的时间给session,用来算下次时间偏量 if($act_len)$responseTime=$this-nodeList-item($last_len)-getAttribute(datetime); $str=addslashes($str); return time:$responseTime,lines:word:$str;第八章 总 结(1)PHP+AJAX+XML模式的聊天室开发,可以实现页面的实时更新,为用户带来好的体验,同时文件存储存储在XML中,避免了程序对数据库的一次次读取,在一定程度上提高的系统的效率;但是,还是存在一定的问题的,比如写入XML文件,有可能会因为特殊字符而导致系统写入XML失败,甚至造成XML乱码;另一方面,XML文件如果太大也有可可能会出错,这些问题都是要考虑的;(2)二十一世界是一个知识突飞猛进的时代,渐渐的已经出现了更加适合做聊天室的技术FLEX,在flash基础上发展起来的flex技术,可以做出更好的效果,大大提高了用户体验;另外出现的新技术,分布式的高速缓存服务器memcached技术,可以实现页面的快速刷新,它将是一个个更好的选择,所以聊天室的制作可以采用flex+memcached来实现,也许会更好;参考文献1 美Rasmus Lerdorf &Kevin Tatroe著PHP 程序设计中国电力出版社,2003年7月 2 Hugh E.Williams等著PHP & MYSQL Web数据库应用开发指南中国电力出版社,2003年5月3 STERLING HUGHES等著. PHP 经典实例. 中国电力出版社,2003年4月.4 (美)Leon Atkinson 著. MySQL 核心编程. 清华大学出版社,2003-4-1.5 David Flanagan著 张铭泽等译. JavaScript 权威指南(第四版). 机械工业出版社,2003年1月.6 (英)克拉恩,帕斯卡雷诺著. Ajax实战,人民邮电出版社,2006-4-1.7 叶新伟等编著. PHP+Ajax Web 2.0编程技术与项目开发大全.电子工业出版社,2008-6-1.8 (澳)泽瓦斯 著. PHP Web 2.0开发实战. 人民邮电出版社. 2008-10-1.9 (美)雅克布斯著. XML 基础教程:入门、DOM、Ajax与Flash. j人民邮电出版社. 2007-7-1.10 W. Jason GilmoreBeginning PHP and MySQL 5Apress11 Thomas Kyte Expert one-on-one Oracle
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!