在global中完成兩件事
新房間在線人員名單的初始化(application_onstart)
Dim nameindex(0)
useronlinename=" "
onliners=0
Application("hxf_c_onlinelist")=nameindex
Application("hxf_c_useronlinename")=useronlinename
Application("hxf_c_chatrs")=onliners
將這一段提前在rs.close setrs=nothing
然後加入
rs.Close
rs.Open "select id from reginfo where grade>6",conn
do while not (rs.EOF or rs.BOF)
--chatroomsn=rs("id")
--Application("hxf_c_onlinelist"&chatroomsn)=nameindex
--Application("hxf_c_useronlinename"&chatroomsn)=useronlinename
--rs.MoveNext
loop
關於session_OnEnd的修改應該在後面說才對
然後就是加入聊天室了hqtchat.ASP關於這兒的調用我們應該加兩個參數
chatroomsn和chatroomname聊天室的房間號和聊天室的名稱
chatroomsn=request.querystring("chatroomsn")
chatroomname=request.querystring("chatroomname")
創建session("hxf_c_mylocale")=chatroomsn
換聊天室的名稱
chatroomname=Application("hxf_c_chatroomname")
為chatroomname=Application("hxf_c_chatroomname")&mychatroomname
換
crm="<%=Application("hxf_c_chatroomname")%>";
為crm="<%=Application("hxf_c_chatroomname")&mychatroomname%>";
然後就是替換了找出你所有文件中的application("hxf_c_useronlinename")為application("hxf_c_useronlinename"&session("hxf_c_mylocale"))
替換application("hxf_c_onlinelist")為application("hxf_c_onlinelist"&session("hxf_c_mylocale"))當然Application_OnStrat中的部分除外
事實是我是在chatroomsn=session("hxf_c_mylocale")之後用chatroomsn換掉了上面的session("hxf_c_mylocale")在循環中這樣調用session並不是一個好主意
這樣每個房間有了自己的獨立的在線名單了
下一步是什麼?我只能對我自己所在聊天室中的人說話而且也只能收到同一房間中的人說的話是的那我們應該在我們說的每一句話中加入一個關於房間號的信息,可是我並不想再加一個sd信息這樣會好麻煩的,於是我看中了syscolor,先改syscolor中的blue和black因為這兩個值 是不定長的不好處理,改成0000ff和000000好了有什麼 變化呢沒有只是也是六個字符長的了這樣更好處理好了下一步吧
那我們說的話就是newsd(537)=addWordcolor&cstr(chatroomsn)了
機器人嗎?它是這樣說的autonewsd(537)=sayscolor&cstr(chatroomsn)
其中的chatroomsn=session("hxf_c_mylocale")
好了,我們說的話中有了我們的房間信息了如何接收呢
在t.ASP中
Select Case sift
Case "0","1","2"
中的每一個case中我們都在if判 斷中多加一個檢測
and mid(sd(i+5),7)=chatroomsn
顏色住信息中多出的房間號現在不處理出沒有關系的
Javascript解釋RGB信息時會自己去除的
如果想也可以是 show(j+5)=left(sd(i+5),6)
好了,現在看起來沒有事了我們的確有了不同的房間了只是好象沒有入口而已
這樣好了你可以自己加我是在hqtchat中另加了一個框架我加在f3的上方你可以自便
<frame src="selectchatroom.ASP?chatroomsn=<%=chatroomsn%>" name="chatroomfrm" scrolling="NO" noresize marginwidth="0" marginheight="0">
其中的selectchatroom.ASP為
<%Response.Expires=0
mychatroomsn=session("hxf_c_mylocale")
chatroomsn=Request.QueryString("chatroomsn")
%>
<form name=form1>
<select name=chatroomselect onchange='Javascript:changechatroom();'>
--<%online=split(trim(application("hxf_c_useronlinename"))," ")
----onlinenum=ubound(online)+1
--%>
<option value='/' <%if chatroomsn=mychatroomsn then Response.Write "selected"%>>
--<%=application("hxf_c_chatroomname")%>/
--<%=onlinenum%>人在線
</option>
<%
set conn=server.CreateObject("adodb.connection")
conn.Open application("hg_connstr"),conn
set rst=server.CreateObject("adodb.recordset")
rst.Open "SELECT ID,username from reginfo where grade>6",conn
do while not (rst.EOF or rst.BOF)
--chatroomsn=rst("ID")
--chatroomname=rst("username")
--useronline=application("hxf_c_useronlinename"&chatroomsn)
--onlinelist=split(trim(useronline)," ")
--onlinelistnum=ubound(onlinelist)+1
%>
--<option value="<%=chatroomsn%>/<%=chatroomname%>" <%if cstr(chatroomsn)=mychatroomsn then Response.Write "selected"%>>
--<%=chatroomname%>/
--<%=onlinelistnum%>人在線
--</option>
<%
--rst.MoveNext
loop
%>
</select>
</form>
<script language=Javascript>
function changechatroom()
{
--var chatroomoption=document.form1.chatroomselect.value;
--var chatroomoptmp;
--var chatroomsn;
--var chatroomname;
--chatroomtmp=chatroomoption.indexOf('/');
--chatroomsn=chatroomoption.substring(0,chatroomtmp);
--chatroomname=chatroomoption.substring(chatroomtmp+1);
--top.t.location.href="about:blank";
--top.d.location.href="about:blank";
--top.f3.location.href="changechatroom.ASP?chatroomsn="+chatroomsn+"&chatroomname="+chatroomname;
}
</script>
好了現在讓我們寫changechatroom.ASP吧
更簡單了,得到房間名稱和房間號先
mychatroomsn=Request.QueryString("chatroomsn")
chatroomname=Request.QueryString("chatroomname")
然後在下面加入exitchat.asp中的部分,當然是已經更改過了的exitchat.ASP呀
去掉最後對close.ASP的調用
最後加入新的處理方法
<script language=Javascript>
var mychatroomsn="<%=mychatroomsn%>";
var chatroomname="<%=chatroomname%>";
top.location.href='jhchat.ASP?chatroomsn='+mychatroomsn+'&chatroomname='+chatroomname;
</script>
這樣就行了不是很簡單嗎
新的房間在線名單不會更新
你可以用refresh 和settimeout 但是我想也許不會有多少人關心,而總是重讀數據庫並不是個好的主意如果你要用 refresh的話我建議是三分鐘
事實上這樣的房間只有六級的人能開如果你的服務器再的足夠好,你可以讓每個人都能開當然你應該在限定了房間數量之後實時更新,這樣會更有趣些,所有的房間都沒有新的管理功能?正是因為這樣我才只讓六級的人才能有自己的房間,當然他不在線就!!
好象就這樣了,應該沒有錯了,自己做了呀