⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getonlineusers.aspx

📁 关于XML和网页配合使用的好书
💻 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 + -