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

ASP
ASP正则表达式技巧
ASP Access实现网站计数器(访问量)
ASP新闻分页,将一篇过长的文章分页,生成静态页面
一些关于asp 购物车的想法
一个sql查询器,自动画表格填字段
ASP实现文件直接下载的代码
把网页中的(电话,qq等数字)生成图片的ASP程序
asp长文章用分页符来分页显示
Asp函数介紹(37个常用函数)
ASP中的面向对象类
分页实现方法的性能比较
asp ajax跨域提交数据
asp修改文件和文件夹的名字的代码
ASP 多关键词查询实例代码
asp被杀毒软件误删的解决方法
asp 多关键词搜索的简单实现方法
asp 根据IP地址自动判断转向分站的代码
asp dictionary对象的用法
ASP 千万级数据分页的存储过程
ASP隐藏真实文件的下载功能实现代码

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 124 ::
收藏到网摘: 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