当前位置: 首页 > 图文教程 > 网络编程 > ASP > 实现聊天室的悄悄话功能(上)

ASP
Access 2000 数据库 80 万记录通用快速分页类
Microsoft JET Database Engine 错误 ''80004005'' 未指定的错误的完美解决方法
收藏的ASP常用的函数集
asp分页的一个类
ASP开发网页牢记注意事项
ASP下操作Excel技术总结分析
ASP数据岛操作类
ASP经典分页类
asp论坛在线人数统计研究
ASP调用SQL SERVER存储程序
asp输出bmp
ASP连接数据库的全能代码
ASP面向对象编程探讨及比较
web文件管理器的后续开发
一小偷类!!有兴趣的可以看看
利用ASP实现事务处理的方法
大数量查询分页显示 微软的解决办法
如何把ASP编写成DLL
asp实现树型结构
超级ASP大分页_我的类容我做主

ASP 中的 实现聊天室的悄悄话功能(上)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 157 ::
收藏到网摘: n/a

       实现聊天室的悄悄话功能(上)
  作者:网络之门
    几个要好的网友在聊天室里闲聊的时侯,总会遇上有些话题是不想同一聊天室内别的聊友看见的,那么聊天室支持悄悄话功能将是什分有必要的了,实现悄悄话的方法很多,现在小虎介绍一下利用session对象来实现它,用session对象来实现悄悄话,是有优缺点的,因为session对象的应用,其实就是客户端cookies的使用。如果客户端cookies不支持或关闭了,那么程序运行起来就有问题了。那么使用session对象就没好处了吗??非也,至少在编程上大大减少了工作量嘛,试想一下如果需要保存该用户的聊天名字,那么使用session对象就能直接保存他的名字了,如果没有session对象。解决的方法看来就只有在处理发言的FORM里设几个隐含的textbox对象来保存,这样处理起来会比教烦锁,但好处是通用性广,就算浏览器不支持cookies仍然可用。
    说到这里,大伙不妨试试网上众多的ASP聊天室,试把浏览器的安全选项(总是接受cookies关了)看看那个聊天室仍然正常地能使用。那个就问题百出来。。呵呵~~不要找小虎的聊天室来试哦....我的聊天室也需要cookies来支持的。不用session对象编程真是烦锁很多。而且大部分浏览器的安全配置的默认值是总是接受cookies。所以也不用太但心,只有少部分的用户是比教特别的。
    现在从聊天室的发言开始,到处理发言,显示发言,一步一步地让大家了解一下是如何处理的,最后就加上悄悄话功能。
    首先,我们的聊天室主要提供如下元素:发言人(你的名字),动作(叫嚷,抱抱...等),对象(这句话是向谁说的呢?),发言内容等四大元素。
    其中发言人(你的聊天名字)的名字是保存在发言FORM的user隐藏文本框中,这样每当发言的时侯,在处理发言的says.asp程序里,就可以用request.form("user")来取得聊天名字。而动作则是由下拉框action来提供的,你可以自定义很多的动作类型,以满足不同聊友的需要。而发言对象,也是由下拉框whoto来选定,这些名单是列出当前聊天室内所有用户的名称。如何判断有新用户进聊天室以及退出处理,这里先不说了。因为构造一个完整的聊天室要做的工作还是挺多的。最后由一个says文本框提供发言内容。
    有了这几个主要的聊天元素。我们就可以进行发言处理了。
    请看看下面的程序片段
  '取得说话内容,并过滤其中的脚本语句
  usersays=request.form("says")
  if instr(usersays,"<script")>0 then
  usersays=""
  end if
  
  '判断是否有谈话内容,没有的话就不作处理
  if len(usersays)<>0 then
  session("whoto")=request.form("whoto")
  session("action")=request.form("action")
  if instr(usersays,chr(39))>0 then
  usersays=replace(usersays,chr(39),"\"&chr(39))
  end if
  if instr(usersays,chr(34))>0 then
  usersays=replace(usersays,chr(34),"\"&chr(34))
  end if
  
  application.lock
  
  '定义一个交谈缓冲区,后面将给大家仔细分析一下
  
  dim chats(20)
  for n=1 to 20
  chats(n)=application("chats")(n)
  next
  username=request.Form("user")
  
  
  usertime=Time
  usertime="("&right(usertime,8)&")"
  user_whoto=request.Form("whoto")
  user_action=request.Form("action")
  if application("counter")>19 then
  application("counter")=0
  end if
  '不是耳语就加一
  if request.form("action")<>"耳语" then
  application("counter")=application("zj_1counter")+1
  counter=application("zj_1counter")
  '用户的动作处理
  
  select case request.FORM("action")
  case "说话"
  if request.FORM("whoto")="ALL" then
  chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> :<font color=#0000aa> "&usersays&"</font><BR><BR>"
  else
  chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <i>与<font color=#00bb00> "&request.FORM