您的位置:首页精文荟萃软件资讯 → 聊天室实现私聊一

聊天室实现私聊一

时间:2004/10/7 19:04:00来源:本站整理作者:蓝点我要评论(0)


            
             
              
             
            

               
               

            



            个要好的网友在聊天室里闲聊的时侯,总会遇上有些话题是不想同一聊天室内别的聊友看见的,那么聊天室支持悄悄话功能将是什分有必要的了,实现悄悄话的方法很多,现在小虎介绍一下利用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,"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)=""&usertime&" "&username&" : "&usersays&"

"
else
chats(counter)=""&usertime&" "&username&" &nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
end if
case "叫嚷"
chats(counter)=""&usertime&" "&username&" &nbsp;"&request.FORM("whoto")&" 大叫: "&usersays&"

"
case "亲亲"
chats(counter)=""&usertime&" "&username&" 亲了亲&nbsp;"&request.FORM("whoto")&" 的脸颊: "&usersays&"

"
case "拥抱"
chats(counter)=""&usertime&" "&username&" 轻轻的抱着&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "暴怒"
chats(counter)=""&usertime&" "&username&" &nbsp;"&request.FORM("whoto")&" 横眉竖目道: "&usersays&"

"
case "轻推"
chats(counter)=""&usertime&" "&username&" 轻轻地推了推&nbsp;"&request.FORM("whoto")&" 的胳膊: "&usersays&"

"
case "傻笑"
chats(counter)=""&usertime&" "&username&" 傻兮兮的朝&nbsp;"&request.FORM("whoto")&" 笑笑: "&usersays&"

"
case "拳打"
chats(counter)=""&usertime&" "&username&" 对准&nbsp;"&request.FORM("whoto")&" 就是一拳: "&usersays&"

"
case "脚踢"
chats(counter)=""&usertime&" "&username&" 凌空一腿踢在&nbsp;"&request.FORM("whoto")&" 脑袋上: "&usersays&"

"
case "告戒"
chats(counter)=""&usertime&" "&username&" 拉着&nbsp;"&request.FORM("whoto")&" 手语气心长地说: "&usersays&"

"
case "耳光"
chats(counter)=""&usertime&" "&username&" 狠狠地掴了&nbsp;"&request.FORM("whoto")&" 几个耳光: "&usersays&"

"
case "鞠躬"
chats(counter)=""&usertime&" "&username&" 毕恭毕敬地向&nbsp;"&request.FORM("whoto")&" 弯腰鞠躬: "&usersays&"

"
case "歉意"
chats(counter)=""&usertime&" "&username&" 感到十二分的歉意,低声对&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "惊讶"
chats(counter)=""&usertime&" "&username&" 惊讶的对&nbsp;"&request.FORM("whoto")&" 吐了吐舌头: "&usersays&"

"
case "哈欠"
chats(counter)=""&usertime&" "&username&" &nbsp;"&request.FORM("whoto")&" 张大嘴巴,打了个哈欠: "&usersays&"

"
case "微笑"
chats(counter)=""&usertime&" "&username&" &nbsp;"&request.FORM("whoto")&" 微微一笑: "&usersays&"

"
case "握手"
chats(counter)=""&usertime&" "&username&" 紧紧的握住&nbsp;"&request.FORM("whoto")&" 的手: "&usersays&"

"
case "耸肩"
chats(counter)=""&usertime&" "&username&" 对着&nbsp;"&request.FORM("whoto")&" 耸耸双肩: "&usersays&"

"
case "安慰"
chats(counter)=""&usertime&" "&username&" 拍拍&nbsp;"&request.FORM("whoto")&" 的肩膀,双眼关切的说: "&usersays&"

"
case "生气"
chats(counter)=""&usertime&" "&username&" 气鼓鼓的嘟嘴对&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "大哭"
chats(counter)=""&usertime&" "&username&" 忍不住对着&nbsp;"&request.FORM("whoto")&" 放声大哭: "&usersays&"

"
case "抽泣"
chats(counter)=""&usertime&" "&username&" 双手捂着脸,对着&nbsp;"&request.FORM("whoto")&" 呜呜咽咽的: "&usersays&"

"
case "承诺"
chats(counter)=""&usertime&" "&username&" 对着&nbsp;"&request.FORM("whoto")&" 把胸脯拍得噼啪响: "&usersays&"

"
case "不舍"
chats(counter)=""&usertime&" "&username&" 依依不舍地拉着&nbsp;"&request.FORM("whoto")&" 的衣角: "&usersays&"

"
case "深情"
chats(counter)=""&usertime&" "&username&" 用深情的眼神,痴痴地看着&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "迷惑"
chats(counter)=""&usertime&" "&username&" 抓抓头皮看着&nbsp;"&request.FORM("whoto")&" 露出迷惑的神情: "&usersays&"

"
case "不解"
chats(counter)=""&usertime&" "&username&" 用不可思意的眼神看着&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "幸灾"
chats(counter)=""&usertime&" "&username&" 幸灾乐祸地对&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "大笑"
chats(counter)=""&usertime&" "&username&" 对着&nbsp;"&request.FORM("whoto")&" 捧腹大笑: "&usersays&"

"
case "皱眉"
chats(counter)=""&usertime&" "&username&" 皱着眉头对&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "委屈"
chats(counter)=""&usertime&" "&username&" 很委屈地看着&nbsp;"&request.FORM("whoto")&" 眼泪哗啦啦地往下流: "&usersays&"

"
case "高兴"
chats(counter)=""&usertime&" "&username&" 兴高采烈地对&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "沮丧"
chats(counter)=""&usertime&" "&username&" 满脸沮丧地对&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "失望"
chats(counter)=""&usertime&" "&username&" 垂头丧气地对&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "神经"
chats(counter)=""&usertime&" "&username&" 神经兮兮地对&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "神秘"
chats(counter)=""&usertime&" "&username&" 非常神秘地对&nbsp;"&request.FORM("whoto")&" : "&usersays&"

"
case "撒娇"
chats(counter)=""&usertime&" "&username&" 拉着&nbsp;"&request.FORM("whoto")&" 手撒娇: "&usersays&"

"
case "鬼脸"
chats(counter)=""&usertime&" "&username&" 对着&nbsp;"&request.FORM("whoto")&" 做了个鬼脸: "&usersays&"

"
case "无奈"
chats(counter)=""&usertime&" "&username&" 对着&nbsp;"&request.FORM("whoto")&" 很无奈地: "&usersays&"

"
end select

'是耳语
else

'耳语处理
application("chat")=""&usertime&" "&username&" 悄悄地对&nbsp;"&request.FORM("whoto")&" 耳语: "&usersays&"

"
'对谁说
application("chatto")=request.FORM("whoto")
'说话的人
application("owner")=username
session("chat")="true"
end if


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


application.unlock


end if

  上面的程序是把用户的发言和动作以及说话对象生成html语句并保存起来。用以后面的在聊天室中显示出来,其中请大家注意一下耳语是保存在application("chat")这个全局应用程序对象中的。好了,下节先为大家详细分析一下说话的内容是如何处理。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本