📄 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 + -