?? getonlineusers.aspx
字號:
<%@ import namespace="System" %>
<%@ import namespace="System.Xml" %>
<%@ language="C#" runat=server EnableSessionState="True" debug="true"%>
<script language="C#" runat="server">
//Page_Load在頁面自動打開或刷新時調用getNumber()顯示在線用戶列表
//getNumber被重載,有帶參數和不帶參數兩種形式
void Page_Load(Object sender,EventArgs E)
{
if(!IsPostBack)
{getNumber();}
}
//帶參數的getNumber在用戶單擊“刷新”按鈕時被調用顯示在線用戶列表
void getNumber(Object sender,EventArgs E)
{
try{
//創建訪問XML文檔的XmlDocument對象
XmlDocument xml_online = new XmlDocument();
xml_online.Load(Server.MapPath("/chatbase/onlineuser.xml"));
XmlNode root_online=xml_online.DocumentElement;
//檢查是否有在線用戶長時間沒有發言,以10分鐘為期限
XmlNode node;
int last,now;
String name,timestr,changed="False";
DateTime currentTime=new DateTime();
currentTime=System.DateTime.Now;
now=currentTime.Minute;
int i;
//驗證每個在線用戶是否在發呆
for(i=root_online.ChildNodes.Count-1;i>=0;i--)
{
//取得在線用戶昵稱和最新時間
node=root_online.ChildNodes[i];
name=node.ChildNodes[0].InnerText;
timestr=node.ChildNodes[1].InnerText;
//將用戶最新時間從字符串轉換為整數,以便于比較
last=Int32.Parse(timestr);
if(now<last)
{now=now+60;}
//將長時間發呆的用戶趕出論壇,從在線用戶中刪除該用戶
//同時發送管理員信息
//判斷用戶上次發言時間是否為10鐘以前,
//是則從在線用戶中刪除該用戶
if ((now-last)>10)
{
//刪除用戶
root_online.RemoveChild(node);
//添加管理員信息
Add_news(name);
changed="True";
}
}
//changed=="True"表示從onlineuser.xml中刪除了某個用戶
//所以需要保存
if(changed=="True")
{
xml_online.Save(Server.MapPath("/chatbase/onlineuser.xml"));
}
//顯示在線用戶名單
i=root_online.ChildNodes.Count;
int j;
Response.Write("<p/><center><b>"+i.ToString()+"</b>人在線</center><br>");
for(j=i-1;j>=0;j--)
{
node=root_online.ChildNodes[j];
Response.Write("<br>"+node.ChildNodes[0].InnerText);
}
}
catch(Exception e)
{
Response.Write("意外掉線或已經離開聊天室");
return;
}
}
//重載的getNumber()在Page_Load中被調用顯示在線用戶列表
void getNumber()
{
try{
//創建訪問XML文檔的XmlDocument對象
XmlDocument xml_online = new XmlDocument();
xml_online.Load(Server.MapPath("/chatbase/onlineuser.xml"));
XmlNode root_online=xml_online.DocumentElement;
//檢查是否有在線用戶長時間沒有發言,以10分鐘為期限
XmlNode node;
int last,now;
String name,timestr,changed="False";
DateTime currentTime=new DateTime();
currentTime=System.DateTime.Now;
now=currentTime.Minute;
int i;
//驗證每個在線用戶是否在發呆
for(i=root_online.ChildNodes.Count-1;i>=0;i--)
{
//取得在線用戶昵稱和最新時間
node=root_online.ChildNodes[i];
name=node.ChildNodes[0].InnerText;
timestr=node.ChildNodes[1].InnerText;
//將用戶最新時間從字符串轉換為整數,以便于比較
last=Int32.Parse(timestr);
if(now<last)
{now=now+60;}
//將長時間發呆的用戶趕出論壇,從在線用戶中刪除該用戶
//同時發送管理員信息
//判斷用戶上次發言時間是否為10鐘以前,
//是則從在線用戶中刪除該用戶
if ((now-last)>10)
{
//刪除用戶
root_online.RemoveChild(node);
//添加管理員信息
Add_news(name);
changed="True";
}
}
//changed=="True"表示從onlineuser.xml中刪除了某個用戶
//所以需要保存
if(changed=="True")
{
xml_online.Save(Server.MapPath("/chatbase/onlineuser.xml"));
}
//顯示在線用戶名單
i=root_online.ChildNodes.Count;
int j;
Response.Write("<p/><center><b>"+i.ToString()+"</b>人在線</center><br>");
for(j=i-1;j>=0;j--)
{
node=root_online.ChildNodes[j];
Response.Write("<br>"+node.ChildNodes[0].InnerText);
}
}
catch(Exception e)
{
Response.Write("意外掉線或已經離開聊天室");
return;
}
}
//Add_news用于向chatnews.xml中添加用戶被趕出聊天室的信息
void Add_news(String name)
{
//創建訪問XML文檔的XmlDocument對象
XmlDocument xml_chatnews = new XmlDocument();
xml_chatnews.Load(Server.MapPath("/chatbase/chatnews.xml"));
XmlNode root_chatnews=xml_chatnews.DocumentElement;
//添加管理員的歡迎信息到聊天信息文件chatnews.xml中
//聊天信息保存在“在線信息”元素中
//“在線信息”元素包括“發送者”、“接收者”、“表情”
//“悄悄話”、“顏色”和“消息”等子元素
//創建新的“在線信息”元素
XmlNode newElem=xml_chatnews.CreateElement("在線信息");
//創建“發送者”子元素
XmlNode subElem=xml_chatnews.CreateElement("發送者");
subElem.InnerText="管理員";
//將“發送者”子元素添加到“在線信息”元素中
newElem.AppendChild(subElem);
//創建“接收者”子元素
subElem=xml_chatnews.CreateElement("接收者");
subElem.InnerText="大家";
//將“接收者”子元素添加到“在線信息”元素中
newElem.AppendChild(subElem);
//創建“表情”子元素
subElem=xml_chatnews.CreateElement("表情");
subElem.InnerText="";
//將“表情”子元素添加到“在線信息”元素中
newElem.AppendChild(subElem);
//創建“悄悄話”子元素
subElem=xml_chatnews.CreateElement("悄悄話");
subElem.InnerText="False";
//將“悄悄話”子元素添加到“在線信息”元素中
newElem.AppendChild(subElem);
//創建“顏色”子元素
subElem=xml_chatnews.CreateElement("顏色");
subElem.InnerText="";
//將“顏色”子元素添加到“在線信息”元素中
newElem.AppendChild(subElem);
//創建“消息”子元素
subElem=xml_chatnews.CreateElement("消息");
subElem.InnerText=name+"長時間發呆,被趕出論壇";
//將“消息”子元素添加到“在線信息”元素中
newElem.AppendChild(subElem);
//將新建的“在線信息”元素添加到聊天信息文件chatnews.xml前面
root_chatnews.InsertBefore(newElem,root_chatnews.FirstChild);
xml_chatnews.Save(Server.MapPath("/chatbase/chatnews.xml"));
return;
}
</script>
<html>
<% Response.AddHeader("Refresh","30"); %>
<body bgcolor="#669999">
<br>
<center>
<form id="form1" method="post" runat="server">
<asp:Button ID="button1" Text="刷新" OnClick="getNumber" Runat="server"></asp:Button>
</form>
</center>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -