聊天室实现私聊第14页
2018-09-06 11:56
几个要好的网友在聊天室里闲聊的时侯,总会遇上有些话题是不想同一聊天室内别的聊友看见的,那么聊天室支持悄悄话功能将是什分有必要的了,实现悄悄话的方法很多,现在小虎介绍一下利用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)
ifinstr(usersays,<script)>0then
usersays=
endif
判断是否有谈话内容,没有的话就不作处理
iflen(usersays)<>0then
session(whoto)=request.form(whoto)
session(action)=request.form(action)
ifinstr(usersays,chr(39))>0then
usersays=replace(usersays,chr(39),\&chr(39))
endif
ifinstr(usersays,chr(34))>0then
usersays=replace(usersays,chr(34),\&chr(34))
endif
application.lock
定义一个交谈缓冲区,后面将给大家仔细分析一下
dimchats(20)
forn=1to20
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)
ifapplication(counter)>19then
application(counter)=0
endif
不是耳语就加一
ifrequest.form(action)<>耳语then
application(counter)=application(zj_1counter)+1
counter=application(zj_1counter)
用户的动作处理
selectcaserequest.FORM(action)
case说话
ifrequest.FORM(whoto)=ALLthen
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
else
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>与<fontcolor=#00bb00>&request.FORM(whoto)&</font>说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
endif
case叫嚷
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>冲<fontcolor=#00bb00>&request.FORM(whoto)&</font>大叫</I>:<B><fontcolor=#0000aa>&usersays&</font></B><BR><BR>
case亲亲
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>亲了亲<fontcolor=#00bb00>&request.FORM(whoto)&</font>的脸颊</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case拥抱
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>轻轻的抱着<fontcolor=#00bb00>&request.FORM(whoto)&</font></I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case暴怒
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>朝<fontcolor=#00bb00>&request.FORM(whoto)&</font>横眉竖目道</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case轻推
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>轻轻地推了推<fontcolor=#00bb00>&request.FORM(whoto)&</font>的胳膊</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case傻笑
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>傻兮兮的朝<fontcolor=#00bb00>&request.FORM(whoto)&</font>笑笑</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case拳打
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>对准<fontcolor=#00bb00>&request.FORM(whoto)&</font>就是一拳</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case脚踢
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>凌空一腿踢在<fontcolor=#00bb00>&request.FORM(whoto)&</font>脑袋上</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case告戒
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>拉着<fontcolor=#00bb00>&request.FORM(whoto)&</font>手语气心长地说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case耳光
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>狠狠地掴了<fontcolor=#00bb00>&request.FORM(whoto)&</font>几个耳光</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case鞠躬
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>毕恭毕敬地向<fontcolor=#00bb00>&request.FORM(whoto)&</font>弯腰鞠躬</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case歉意
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>感到十二分的歉意,低声对<fontcolor=#00bb00>&request.FORM(whoto)&</font>说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case惊讶
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>惊讶的对<fontcolor=#00bb00>&request.FORM(whoto)&</font>吐了吐舌头</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case哈欠
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>对<fontcolor=#00bb00>&request.FORM(whoto)&</font>张大嘴巴,打了个哈欠</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case微笑
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>对<fontcolor=#00bb00>&request.FORM(whoto)&</font>微微一笑</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case握手
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>紧紧的握住<fontcolor=#00bb00>&request.FORM(whoto)&</font>的手</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case耸肩
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>对着<fontcolor=#00bb00>&request.FORM(whoto)&</font>耸耸双肩</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case安慰
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>拍拍<fontcolor=#00bb00>&request.FORM(whoto)&</font>的肩膀,双眼关切的说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case生气
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>气鼓鼓的嘟嘴对<fontcolor=#00bb00>&request.FORM(whoto)&</font>道</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case大哭
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>忍不住对着<fontcolor=#00bb00>&request.FORM(whoto)&</font>放声大哭</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case抽泣
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>双手捂着脸,对着<fontcolor=#00bb00>&request.FORM(whoto)&</font>呜呜咽咽的</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case承诺
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>对着<fontcolor=#00bb00>&request.FORM(whoto)&</font>把胸脯拍得噼啪响</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case不舍
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>依依不舍地拉着<fontcolor=#00bb00>&request.FORM(whoto)&</font>的衣角</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case深情
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>用深情的眼神,痴痴地看着<fontcolor=#00bb00>&request.FORM(whoto)&</font></I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case迷惑
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>抓抓头皮看着<fontcolor=#00bb00>&request.FORM(whoto)&</font>露出迷惑的神情</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case不解
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>用不可思意的眼神看着<fontcolor=#00bb00>&request.FORM(whoto)&</font></I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case幸灾
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>幸灾乐祸地对<fontcolor=#00bb00>&request.FORM(whoto)&</font>说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case大笑
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>对着<fontcolor=#00bb00>&request.FORM(whoto)&</font>捧腹大笑</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case皱眉
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>皱着眉头对<fontcolor=#00bb00>&request.FORM(whoto)&</font></I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case委屈
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>很委屈地看着<fontcolor=#00bb00>&request.FORM(whoto)&</font>眼泪哗啦啦地往下流</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case高兴
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>兴高采烈地对<fontcolor=#00bb00>&request.FORM(whoto)&</font>说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case沮丧
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>满脸沮丧地对<fontcolor=#00bb00>&request.FORM(whoto)&</font>说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case失望
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>垂头丧气地对<fontcolor=#00bb00>&request.FORM(whoto)&</font>说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case神经
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>神经兮兮地对<fontcolor=#00bb00>&request.FORM(whoto)&</font>说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case神秘
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>非常神秘地对<fontcolor=#00bb00>&request.FORM(whoto)&</font>说</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case撒娇
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>拉着<fontcolor=#00bb00>&request.FORM(whoto)&</font>手撒娇</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case鬼脸
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>对着<fontcolor=#00bb00>&request.FORM(whoto)&</font>做了个鬼脸</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
case无奈
chats(counter)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>对着<fontcolor=#00bb00>&request.FORM(whoto)&</font>很无奈地</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
endselect
是耳语
else
耳语处理
application(chat)=<fontcolor=blue>&usertime&</font><fontcolor=black>&username&</font><I>悄悄地对<fontcolor=#00bb00>&request.FORM(whoto)&</font>耳语</I>:<fontcolor=#0000aa>&usersays&</font><BR><BR>
对谁说
application(chatto)=request.FORM(whoto)
说话的人
application(owner)=username
session(chat)=true
endif
谈话全局化
application(chats)=chats
application.unlock
endif
上面的程序是把用户的发言和动作以及说话对象生成html语句并保存起来。用以后面的在聊天室中显示出来,其中请大家注意一下耳语是保存在application(chat)这个全局应用程序对象中的。好了,下节先为大家详细分析一下说话的内容是如何处理。
1234下一页阅读全文