📄 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)
{
getNumber();
}
//重载的getNumber在Page_Load中被调用显示在线用户列表
void getNumber()
{
try{
//创建访问XML文档的XmlDocument对象
XmlDocument xml_online=new XmlDocument();
xml_online.Load(Server.MapPath("/chatdata/onlineusers.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="Ture";
}
}
//changed=="True"表示从onlineuser.xml中删除了某个用个用户
//所以需要保存
if(changed=="True")
{
xml_online.Save(Server.MapPath("/chatdata/onlineusers.xml"));
}
//显示在线用户名单
i=root_online.ChildNodes.Count;
int j;
Response.Write("<div nowrap='False'>");
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);
}
Response.Write("</div>");
}
catch(Exception e)
{
//当出错时自动链接到error.htm页面,显示相应的提示信息
Response.Redirect("error.htm");
return;
}
}
//Add_news用于向chatnews.xml中添加用户被赶出聊天室的信息
void Add_news(String name)
{
//创建访问XML文档的XmlDocument 对象
XmlDocument xml_chatnews=new XmlDocument();
xml_chatnews.Load(Server.MapPath("/chatdata/chatings.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);
//将新建的“聊天信息”元素添加到聊天信息文件chantnews.xml前面
root_chatnews.InsertBefore(newElem,root_chatnews.FirstChild);
xml_chatnews.Save(Server.MapPath("/chatdata/chatings.xml"));
return;
}
</script>
<html>
<!--设置60秒自动刷新在线用户名单-->
<% Response.AddHeader("Refresh","60");%>
<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 + -