快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

聊天室实现私聊(一)

 几个要好的网友在聊天室里闲聊的时侯,总会遇上有些话题是不想同一聊天室内别的聊友看见的,那么聊天室支持静静话功能将是什分有必要的了,实现静静话的方式很多,现在小虎介绍一下利用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>&nbsp;"&request.FORM("whoto")&" </font>说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
end if
case "叫嚷"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>冲<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>大叫</I>:<B><font color=#0000aa> "&usersays&"</font></B><BR><BR>"
case "亲亲"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>亲了亲<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>的脸颊</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "拥抱"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>轻轻的抱着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font></I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "暴怒"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>朝<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>横眉竖目道</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "轻推"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>轻轻地推了推<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>的胳膊</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "傻笑"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>傻兮兮的朝<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>笑笑</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "拳打"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>对准<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>就是一拳</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "脚踢"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>凌空一腿踢在<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>脑袋上</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "告戒"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>拉着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>手语气心长地说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "耳光"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>狠狠地掴了<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>几个耳光</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "鞠躬"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>毕恭毕敬地向<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>弯腰鞠躬</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "歉意"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>感到十二分的歉意,低声对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "惊奇"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>惊奇的对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>吐了吐舌头</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "哈欠"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>张大嘴巴,打了个哈欠</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "微笑"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>微微一笑</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "握手"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>紧紧的握住<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>的手</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "耸肩"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>对着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>耸耸双肩</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "安慰"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>拍拍<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>的肩膀,双眼关切的说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "气愤"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>气鼓鼓的嘟嘴对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>道</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "大哭"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>忍不住对着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>放声大哭</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "抽泣"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>双手捂着脸,对着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>呜呜咽咽的</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "承诺"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>对着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>把胸脯拍得噼啪响</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "不舍"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>依依不舍地拉着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>的衣角</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "深情"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>用深情的眼神,痴痴地看着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font></I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "疑惑"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>抓抓头皮看着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>露出疑惑的神情</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "不解"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>用不可思意的眼神看着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font></I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "幸灾"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>幸灾乐祸地对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "大笑"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>对着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>捧腹大笑</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "皱眉"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>皱着眉头对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font></I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "委屈"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>很委屈地看着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>眼泪哗啦啦地往下流</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "兴奋"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>兴高采烈地对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "沮丧"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>满脸沮丧地对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "失望"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>没精打采地对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "神经"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>神经兮兮地对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "神秘"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>异常神秘地对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>说</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "撒娇"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>拉着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>手撒娇</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "鬼脸"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>对着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>做了个鬼脸</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
case "无奈"
chats(counter)="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>对着<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>很无奈地</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
end select

\\\'是耳语
else

\\\'耳语处理
application("chat")="<font color=blue>"&usertime&"</font> <font color=black>"&username&"</font> <I>静静地对<font color=#00bb00>&nbsp;"&request.FORM("whoto")&" </font>耳语</I>:<font color=#0000aa> "&usersays&"</font><BR><BR>"
\\\'对谁说
application("chatto")=request.FORM("whoto")
\\\'说话的人
application("owner")=username
session("chat")="true"
end if


\\\'谈话全局化
application("chats")=chats


application.unlock


end if

  上面的程序是把用户的发言和动作以及说话对象生成html语句并保存起来。用以后面的在聊天室中显示出来,其中请大家注重一下耳语是保存在application("chat")这个全局应用程序对象中的。好了,下节先为大家具体分析一下说话的内容是如何处理。
返回类别: 教程
上一教程: 怎样才能将QUERY STRING从一个ASP文件传送到另一个
下一教程: 关于日期计算的问题

您可以阅读与"聊天室实现私聊(一)"相关的教程:
· 聊天室实现私聊(四)
· 聊天室实现私聊(三)
· 聊天室实现私聊(二)
· XMLHTTP+JAVASCRIPT+ASP写得聊天室,无刷新实现(三)
· 实现聊天室在线人员无刷新所需要的JavaScript技术 - 2
    微笑服务 优质保证 索取样品