利用ASP开发网络聊天室[来源网络]

经常在Internet上冲浪的网友恐怕很少有人没有去过聊天室胡乱神聊。你只要稍微留意一下就会发现这些聊天室大多是用CGI程序或者用JAVA开发的Applet维护的。开发过这类CGI或Applet的程序员都知道,这种开发工作是费时费力的。那么有没有一种更简单、省力的开发方式呢?答案是肯定的。   关于ASP的介绍有许多计算机杂志介绍过,在这里不在赘述。 一、聊天室的规划:   1、谈话内容储存方式的选择:在客户机上显示即时谈话的内容应以什么方式储存在服务器呢?ASP有两种选择,一种是以文本文件方式,一种是以数据库方式。但笔者感觉ASP对文本文件操作的指令远不如ADO(ActiveDataObject)提供的对数据库操作的指令多。所以利用ADO,ASP能对数据库灵活地操作,比如插入、删除、更新、查询等等。笔者选择Access数据库来储存谈话的内容。该数据库内容只保留一天(可根据LAN的实际情况确定时间长短)的谈话内容。   2、聊天室界面的设计:为了客户能够方便地浏览站点的内容,又能尽可能地显示聊天室的内容,笔者在一幅主页里设计了三帧。左边一帧显示的是站点的Index。右边一帧又分成上下两帧。上帧占70%,用来显示当前聊天室的内容;下帧占30%,用来提供一个文本输入框和供用户反馈的按钮。   3、进入聊天室的步骤:象大多数聊天室一样,首先应该提供给用户一个登录界面,由用户输入自己的名字或别名和自己随意给定的密码。如果输入的用户名与线的用户名相同,则提示用户重新选择用户名或重新输入密码,以保证在线的所有用户名都是唯一的。登陆成功后进入聊天室,内容显示帧显示“欢迎加入”的欢迎信息。用户就可以在文本输入区内输入谈话内容了。 二、设计过程和开发技巧:   1、设计ODBC系统数据源:如前所述,本开发采用ASP对ADO进行操作,因此必须先对数据源进行设置。在NT服务器的控制面板里双击ODBC图标,在系统DSN页添加系统DSN,选择MicrosoftAccessDriver,DataSourceName为‘fybchat';,Database选择Chat目录下的chat.mdb.该数据库包括下面几个字段:name,content,password,chattime,chatdate,分别以来存储姓名、谈话内容、密码、谈话时间和谈话日期。   2、登录界面设计:登录界面为一html页,包含一些警告信息和一个Form。该Form以来获取帐号和密码,如下所示:
帐号: 密 码: < br >< br > < center >
  通过提交按钮来激发receivedata.asp。该ASP文件主要来保证在聊天室里没有两个用户是同帐号的。用户提交信息后,该文件打开chat.mdb检查是否已经有该帐号,如果有但密码不对就提醒用户重新输入密码,如果没有那么用户就顺利进入了聊天室。进入聊天室界面的功能由下列语句完成:   注意这里有一个技巧,通过参数kname将用户的帐号隐藏在客户的浏览器里面了,这样一来,用户每次提交谈话内容的同时也把他的帐号提交了。   3、文本输入区的设计:文本输入区是由frft.asp产生的。如上所述,用户每次提交谈话内容的同时也把他的帐号提交了,用户提交谈话内容的动作是激活forum.asp。forum.asp的作用是刷新聊天室的内容。Frft.asp内容如下: </head > <body > <% kname=request.QueryString("kname")% > <base target="main" > <form name="fm1" method="POST" action="forum.asp"> <p align="center" ><input type="text" size="90" name="content" > <p align="center" ><input type="button" name="B1" value=" 提 交/ 刷 新" > <input type="reset" name="B2" value=" 重 写" >< /p > <input type="hidden" name="kname" value=< % =kname% >> </form > <SCRIPT LANGUAGE="VBScript" > <!-- Sub IeTimer1_Timer() if fm1.content.value="" then fm1.content.value="" fm1.submit end if end sub sub b1_onclick() fm1.submit fm1.content.value="" end sub --> </SCRIPT > <OBJECT ID="IeTimer1" WIDTH=39 HEIGHT=39 CLASSID="CLSID:59CCB4A0-727D- 11CF-AC36-00AA00A47DD2" CODEBASE="http://208.208.208.201/asp/ietimer.ocx" > <PARAM NAME="_ExtentX" VALUE="1005" > <PARAM NAME="_ExtentY" VALUE="1005" > <PARAM NAME="Interval" VALUE="7000" > </OBJECT > </body> </html >   这时又出现了一个问题,用户必须不停提交才能看到最新的聊天室内容,这显然给用户带来了不便。于是考虑用一个timer的ActiveX控件来控制聊天室的内容岂不更好?于是选用了Ietimer,如上<object>……</object>所引用,每隔7秒钟聊天室内容自动更新一次。这样即使用户不想参加聊天也可以坐在机器边看别人聊天了。 三、总结   由上述开发过程我们可以知道,利用ASP程序可以很灵活地传递参数,并且可以很灵活地将程序流程分割成几个单独的ASP程序,非常利于程序的调试,对ActiveX控件的支持和对DAO的强大操作能力使得利用ASP能够开发功能非常强大的程序。</td></tr></table> </div> <div id="post_rate_div_369319"></div> <div class="useraction"> <a href="javascript:;" onclick="showDialog($('favoritewin').innerHTML, 'info', '收藏/关注')">收藏</a> <a href="javascript:;" id="share" onclick="showDialog($('sharewin').innerHTML, 'info', '分享')">分享</a> </div> </div> </div> </td></tr> <tr><td class="postcontent postbottom"> <div id="ad_thread1_0"></div></td> </tr> <tr> <td class="postauthor"></td> <td class="postcontent"> <div class="postactions"> <div class="postact s_clear"> <em> </em> <p> </p> </div> </div> </td> </tr> <tr class="threadad"> <td class="postauthor"></td> <td class="adcontent"> </td> </tr> </table> </div></div> <div id="postlistreply" class="mainbox viewthread"><div id="post_new" class="viewthread_table" style="display: none"></div></div> <form method="post" name="modactions" id="modactions"> <input type="hidden" name="formhash" value="b2c8c677" /> <input type="hidden" name="optgroup" /> <input type="hidden" name="operation" /> <input type="hidden" name="listextra" value="page%3D227" /> </form> <script type="text/javascript">var tagarray = ['软件','手机','免费','南京智浩科技','机房报警','正版','珠江','南京','电脑','二手笔记本','南京二手笔记本','陈德志','二手笔记本批发','模块','批发出售','电脑配件','二手IBM','温度报警','教程','浩浩','IBM','论坛','朋友','支付宝','神马','歌曲','路全新','网络安全','原创歌手','MP3','托盘','宴会','分量','带宽分配','杯子','果汁','妓女','远程维护','系统安全','销售管理','蓝牙','四川旅游','ATI','歌手','网络客户','保密','检查','取证','工具','电脑软件','环境监控','交换机','诺基亚','多普达','时尚','三星','正品','三星W629','AMD','伯爵','行为管理','数码相机','空调启动切换器','空调控制器','空调启动器','空调启动切换控制器','宝贝','IBM批发','东莞','发网','批发价格','GSM机房环境监控','机房环境监控','推荐','帮忙','垃圾邮件','网络ghost','网络克隆','梭子鱼','杀毒','硬盘克隆','ibmpifa','台式','铭瑄','ISO27001','笔记本','性价比','国庆','出货','戴尔','电脑报价','出售','亏本','南京二手电脑','你来啦','即时通讯','风险管理','咨询','信息安全','清扬'];var tagencarray = ['%C8%ED%BC%FE','%CA%D6%BB%FA','%C3%E2%B7%D1','%C4%CF%BE%A9%D6%C7%BA%C6%BF%C6%BC%BC','%BB%FA%B7%BF%B1%A8%BE%AF','%D5%FD%B0%E6','%D6%E9%BD%AD','%C4%CF%BE%A9','%B5%E7%C4%D4','%B6%FE%CA%D6%B1%CA%BC%C7%B1%BE','%C4%CF%BE%A9%B6%FE%CA%D6%B1%CA%BC%C7%B1%BE','%B3%C2%B5%C2%D6%BE','%B6%FE%CA%D6%B1%CA%BC%C7%B1%BE%C5%FA%B7%A2','%C4%A3%BF%E9','%C5%FA%B7%A2%B3%F6%CA%DB','%B5%E7%C4%D4%C5%E4%BC%FE','%B6%FE%CA%D6IBM','%CE%C2%B6%C8%B1%A8%BE%AF','%BD%CC%B3%CC','%BA%C6%BA%C6','IBM','%C2%DB%CC%B3','%C5%F3%D3%D1','%D6%A7%B8%B6%B1%A6','%C9%F1%C2%ED','%B8%E8%C7%FA','%C2%B7%C8%AB%D0%C2','%CD%F8%C2%E7%B0%B2%C8%AB','%D4%AD%B4%B4%B8%E8%CA%D6','MP3','%CD%D0%C5%CC','%D1%E7%BB%E1','%B7%D6%C1%BF','%B4%F8%BF%ED%B7%D6%C5%E4','%B1%AD%D7%D3','%B9%FB%D6%AD','%BC%CB%C5%AE','%D4%B6%B3%CC%CE%AC%BB%A4','%CF%B5%CD%B3%B0%B2%C8%AB','%CF%FA%CA%DB%B9%DC%C0%ED','%C0%B6%D1%C0','%CB%C4%B4%A8%C2%C3%D3%CE','ATI','%B8%E8%CA%D6','%CD%F8%C2%E7%BF%CD%BB%A7','%B1%A3%C3%DC','%BC%EC%B2%E9','%C8%A1%D6%A4','%B9%A4%BE%DF','%B5%E7%C4%D4%C8%ED%BC%FE','%BB%B7%BE%B3%BC%E0%BF%D8','%BD%BB%BB%BB%BB%FA','%C5%B5%BB%F9%D1%C7','%B6%E0%C6%D5%B4%EF','%CA%B1%C9%D0','%C8%FD%D0%C7','%D5%FD%C6%B7','%C8%FD%D0%C7W629','AMD','%B2%AE%BE%F4','%D0%D0%CE%AA%B9%DC%C0%ED','%CA%FD%C2%EB%CF%E0%BB%FA','%BF%D5%B5%F7%C6%F4%B6%AF%C7%D0%BB%BB%C6%F7','%BF%D5%B5%F7%BF%D8%D6%C6%C6%F7','%BF%D5%B5%F7%C6%F4%B6%AF%C6%F7','%BF%D5%B5%F7%C6%F4%B6%AF%C7%D0%BB%BB%BF%D8%D6%C6%C6%F7','%B1%A6%B1%B4','IBM%C5%FA%B7%A2','%B6%AB%DD%B8','%B7%A2%CD%F8','%C5%FA%B7%A2%BC%DB%B8%F1','GSM%BB%FA%B7%BF%BB%B7%BE%B3%BC%E0%BF%D8','%BB%FA%B7%BF%BB%B7%BE%B3%BC%E0%BF%D8','%CD%C6%BC%F6','%B0%EF%C3%A6','%C0%AC%BB%F8%D3%CA%BC%FE','%CD%F8%C2%E7ghost','%CD%F8%C2%E7%BF%CB%C2%A1','%CB%F3%D7%D3%D3%E3','%C9%B1%B6%BE','%D3%B2%C5%CC%BF%CB%C2%A1','ibmpifa','%CC%A8%CA%BD','%C3%FA%ACu','ISO27001','%B1%CA%BC%C7%B1%BE','%D0%D4%BC%DB%B1%C8','%B9%FA%C7%EC','%B3%F6%BB%F5','%B4%F7%B6%FB','%B5%E7%C4%D4%B1%A8%BC%DB','%B3%F6%CA%DB','%BF%F7%B1%BE','%C4%CF%BE%A9%B6%FE%CA%D6%B5%E7%C4%D4','%C4%E3%C0%B4%C0%B2','%BC%B4%CA%B1%CD%A8%D1%B6','%B7%E7%CF%D5%B9%DC%C0%ED','%D7%C9%D1%AF','%D0%C5%CF%A2%B0%B2%C8%AB','%C7%E5%D1%EF'];parsetag(369319);</script> <div class="forumcontrol s_clear"> <table cellspacing="0" cellpadding="0" > <tr> <td class="modaction"> </td> <td> <span class="pageback"><a href="forumdisplay.php?fid=1&page=227">返回列表</a></span> <span class="replybtn"><a href="post.php?action=reply&fid=1&tid=55830" onclick="showWindow('reply', this.href);return false;">回复</a></span> <span class="postbtn" id="newspecialtmp" onmouseover="$('newspecial').id = 'newspecialtmp';this.id = 'newspecial';showMenu({'ctrlid':this.id})"><a href="post.php?action=newthread&fid=1" onclick="showWindow('newthread', this.href);return false;">发帖</a></span> </td> </tr> </table> </div> <div class="popupmenu_popup" id="fjump_menu" style="display: none"> <dl><dt><a href="index.php?gid=270">使用交流</a></dt><dd><ul><li class="current"><a href="forumdisplay.php?fid=1">网络安全</a></li><li><a href="forumdisplay.php?fid=18">网络技术</a></li></ul></dd></dl><dl><dt><a href="index.php?gid=188">娱乐休闲</a></dt><dd><ul><li><a href="forumdisplay.php?fid=2">灌水乐园</a></li><li><a href="forumdisplay.php?fid=413">文学天地</a></li><li><a href="forumdisplay.php?fid=353">美图欣赏</a></li></ul></dd></dl><dl><dt><a href="index.php?gid=409">网站办公</a></dt><dd><ul><li><a href="forumdisplay.php?fid=14">站务处理</a></li></ul></dd></dl></div> <div id="favoritewin" style="display: none"> <h5> <a href="javascript:;" onclick="ajaxget('my.php?item=favorites&tid=55830', 'favorite_msg');return false;" class="lightlink">[收藏此主题]</a>  <a href="javascript:;" onclick="ajaxget('my.php?item=attention&action=add&tid=55830', 'favorite_msg');return false;" class="lightlink">[关注此主题的新回复]</a> </h5> <span id="favorite_msg"></span> </div> <div id="sharewin" style="display: none"> <h5> <a href="javascript:;" onclick="setCopy('利用ASP开发网络聊天室[来源网络]\nhttp://bbs.thysea.com/viewthread.php?tid=55830', '帖子地址已经复制到剪贴板<br />您可以用快捷键 Ctrl + V 粘贴到 QQ、MSN 里。')" class="lightlink" />[通过 QQ、MSN 分享给朋友]</a><br /><br /> </h5> </div> </div><div id="ad_footerbanner1"></div><div id="ad_footerbanner2"></div><div id="ad_footerbanner3"></div> <div id="footer"> <div class="wrap s_clear"> <div id="footlink"> <p> <strong><a href="http://www.thysea.com/" target="_blank">黑色海岸线</a></strong> <span class="pipe">|</span><a href="mailto:support@microsoft.com">联系我们</a> <span class="pipe">|</span><a href="stats.php">论坛统计</a><span class="pipe">|</span><a href="archiver/" target="_blank">Archiver</a></p> <p class="smalltext"> GMT+8, 2025-1-12 23:20, <span id="debuginfo">Processed in 0.051061 second(s), 5 queries, Gzip enabled</span>. </p> </div> <div id="rightinfo"> <p>Powered by <strong><a href="http://www.discuz.net" target="_blank">Discuz!</a></strong> <em>7.2</em></p> <p class="smalltext">© 2001-2009 <a href="http://www.comsenz.com" target="_blank">Comsenz Inc.</a></p> </div></div> </div> </body> </html>