刷新帧,文件名fresh.asp
发表于:2007-06-30来源:作者:点击数:
标签:
刷新帧:文件名fresh.asp % Option Explicit dim msg,tmsg,ws,action,user,whoto,tcolor,kicklist,chatpoin,chatcomm,cha td ata,sendid,i,reciid dim tsecretly,thidename,dispstr,tchatpoin,tuserpoin,tchatcomm,j dim sendname,address1,reciname user=req
刷新帧:文件名fresh.asp
<%
Option Explicit
dim msg,tmsg,ws,action,user,whoto,tcolor,kicklist,chatpoin,chatcomm,cha
tdata,sendid,i,reciid
dim tsecretly,thidename,dispstr,tchatpoin,tuserpoin,tchatcomm,j
dim sendname,address1,reciname
user=request("user")
whoto=request.form("whoto")
tmsg=request.form("SAYS")
tmsg=replace(tmsg,"\","\\")
tmsg=replace(tmsg,",","\,")
tmsg=replace(tmsg,"<","<") ‘’屏蔽所有的Html标记
tmsg=replace(tmsg,"<img","<img") ‘’放开<img标记
tmsg=replace(tmsg,"<b","<b") ‘’放开<b标记
if request.form("ws")="on" then
ws=true
else
ws=false
end if
kicklist=application("kicklist")
‘’是否被踢用户
if instr(kicklist,"‘’#"&user&"‘’")>0 then
response.write "<script>parent.top.location=‘’kickout.htm‘’;</script>"
response.end
end if
if instr(kicklist,"‘’"&Request.ServerVariables("remote_addr")&"‘’")>0 then
response.write "<script>parent.top.location=‘’kickout.htm‘’;</script>"
end if
chatpoin=application("chatpoin") ‘’聊天室指针
chatcomm=application("chatcomm") ‘’聊天室内容
chatdata=application("chatdata") ‘’聊天室用户数据
sendid=-1
reciid=-1
for i=0 to 50
if chatdata(i,0)=user and chatdata(i,1)=Request.ServerVariables("remote_addr") then sendid=i ‘’注意,在些检查IP地址,预防被穿墙
if chatdata(i,0)=whoto then reciid=i
next
if sendid=-1 then
response.write "用户没有进入聊天室"
response.end
end if
chatdata(sendid,4)=(chatdata(sendid,4) mod 104) ‘’置标志,预防被自动踢出聊天室
msg=right(time,8)&","&user&","&request.form("action")&","&whoto&","&request.form("color")
if ws then
msg=msg&",1"
else
msg=msg&",0"
end if
msg="‘’"&msg&","&tmsg
if reciid=-1 and whoto<>"所有人" then ws=true:reciid=sendid:msg=msg&"<font color=red>("&whoto&"不在此聊天室)</font>"
msg=msg&"‘’<br>"
if tmsg<>"" then
if ws then ‘’耳语
if whoto<>"所有人" then chatdata(sendid,3)=chatdata(sendid,3)&msg
if reciid<>-1 and sendid<>reciid then chatdata(reciid,3)=chatdata(reciid,3)&msg
application.lock
application("chatdata")=chatdata
application.unlock
end if
if not ws or ws and whoto="所有人" then ‘’属于全部人的数据
if chatpoin=49 then
chatpoin=0 ‘’数组回头,循环调用
call checkname
else
chatpoin=chatpoin+1
end if
chatcomm(chatpoin)=msg ‘’将内容写进application内
application.lock
application("chatcomm")=chatcomm
application("chatpoin")=chatpoin
application.unlock
end if
end if
%><meta http-equiv="refresh" content="3; URL=refresh.asp?user=<% =user %>"><%
tsecretly=chatdata(sendid,3) ‘’取私聊内容
thidename=chatdata(sendid,5) ‘’取隐藏名单
dim tmpstr
if tsecretly<>"" then ‘’显示私聊内容
response.write thidename
dispstr=""
dim temps
tsecretly=split(tsecretly,"<br>")
for i=0 to ubound(tsecretly)-1
tmpstr=split(tsecretly(i),",")
if instr(thidename,",‘’"&tmpstr(3)&"‘’")<1 then dispstr=dispstr&","&replace(tsecretly(i),"<br>","")
next
chatdata(sendid,3)="" ‘’清空私聊内容
end if
tuserpoin=chatdata(sendid,2) ‘’用户指针
tchatpoin=chatpoin
if tchatpoin<>tuserpoin then ‘’显示公聊内容
if tchatpoin<tuserpoin then tchatpoin=tchatpoin+50 ‘’修正用户指针
if (chatdata(sendid,4) mod 2)=1 then ‘’请勿打挠开关打开了
for i=tuserpoin+1 to tchatpoin
j=(i mod 50) ‘’修正指针
if chatcomm(j)<>"" then
tmpstr=split(chatcomm(j),",")
if instr(thidename,",‘’"&tmpstr(3)&"‘’")<1 and ((tmpstr(3)=user or tmpstr(3)="所有人")) then dispstr=dispstr&","&replace(chatcomm(j),"<br>","")
end if
next
else
for i=tuserpoin+1 to tchatpoin
j=(i mod 50) ‘’修正指针
if chatcomm(j)<>"" then
tmpstr=split(chatcomm(j),",")
if instr(thidename,",‘’"&tmpstr(3)&"‘’")<1 then dispstr=dispstr&","&replace(chatcomm(j),"<br>","")
end if
next
end if
chatdata(sendid,2)=chatpoin
end if
response.write "<script language=‘’
javascript‘’>"&chr(13)&chr(10)
if dispstr<>"" then
response.write "for(var i=0;i<parent.comm.length;i++){delete parent.comm[i];}"&chr(13)&chr(10)
dispstr="parent.comm=new Array("&mid(dispstr&");",2)
response.write dispstr&chr(13)&chr(10)
response.write "parent.writecomm();"&chr(13)&chr(10)
end if
if (chatdata(sendid,4) mod 8)>=4 then ‘’有新用户加进,刷新名单
chatdata(sendid,4)=chatdata(sendid,4) mod 4
response.write "top.u.location.reload();"
end if
application.lock
application("chatdata")=chatdata
application.unlock
response.write "</script>"
sub checkname
‘’处理没有太久没有连线取内容的用户
dim onliuser,uleave
uleave=false
onliuser=application("onliuser")
chatdata=application("chatdata")
for i=0 to 50
if chatdata(i,4)>98 then ‘’用户太久没有连接,清空此用户数据
application.lock
application("onliuser")=replace(application("onliuser"),",‘’"&chatdata(i,0)&"‘’","")
application.unlock
chatdata(i,0)=""
chatdata(i,1)=""
uleave=true
else
if chatdata(i,0)<>"" then
chatdata(i,4)=chatdata(i,4)+104 ‘’给用户加上标志
end if
end if
next
if uleave then
for i=0 to 50
chatdata(i,4)=(chatdata(i,4) mod 4)+4 ‘’通知其它用户刷新名单
next
end if
application.lock
application("chatdata")=chatdata
application.unlock
end sub
%>
原文转自:http://www.ltesting.net