📄 default.aspx
字号:
<%@ import namespace="System.Xml" %>
<%@ language="C#" runat=server EnableSessionState="true"%>
<script language="C#" runat="server">
//Page_Load在页面加载时被执行
//在此用于设置显示站点计数器的标签的值
void Page_Load(Object sender,EventArgs E)
{
//从保存站点访问量的XML文档中读取数据
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("/chatbase/numbers.xml"));
XmlNode root=xmldoc.DocumentElement;
//将标签number的值设置为站点访问量
number.Text=root.InnerText;
}
//check_log用于检验用户的登录信息
//用户登录信息合法则让用户进入聊天室
//同时,将用户加入在线用户名单
//并以管理员身份添加一条欢迎信息到聊天信息中
void check_log(Object sender,EventArgs E)
{
//如果用户为新用户或是登录信息出错,
//则使用checked_news标签显示提示信息
//检查输入的昵称是否为空
if (name.Text==""){
checked_news.Text="没有输入昵称";
return;
}
//检查是否输入口令
if(password.Text==""){
checked_news.Text="没有输入口令";
return;
}
//在确认了输入信息后,再检查是否是已注册用户
//创建XmlDocument对象,以便访问保存注册用户信息的XML文档
XmlDocument xmldoc = new XmlDocument();
//打开保存注册用户信息的XML文档usersbase.xml
xmldoc.Load(Server.MapPath("/chatbase/usersbase.xml"));
//查询昵称是否已被注册
XmlNode node=xmldoc.SelectSingleNode("//论坛成员[昵称='"+name.Text+"']");
if (node==null){
checked_news.Text="**"+name.Text+"**"+"没有注册";
return;
}
//检查密码是否正确
if(node.ChildNodes[1].InnerText!=password.Text)
{
checked_news.Text="请检查昵称和口令是否输入正确";
return;
}
//检验用户是否已经在线
xmldoc.Load(Server.MapPath("/chatbase/onlineuser.xml"));
node=xmldoc.SelectSingleNode("//论坛成员[昵称='"+name.Text+"']");
if (node!=null){
checked_news.Text="**"+name.Text+"**"+"已经在线";
return;
}
//将用户昵称保存到Session对象中,Session对象在各个ASPX文件中具有特殊作用
//Session对象中保存的“UserName”为当前用户昵称,在其他文件中需要被使用
Session["UserName"]=name.Text;
//在验证登录信息后,将用户加入“在线用户名单”——onlineuser.xml
//保存在线用户信息的子元素为“论坛成员”
//“论坛成员”元素中包含“昵称”和“最新时间”子元素
//“最新时间”子元素中保存用户的最新时间,用于检验用户登录后是否不发言
//长时间不发言的用户将被请出论坛
//创建“论坛成员”元素
XmlNode newElem=xmldoc.CreateElement("论坛成员");
//创建“昵称”元素
XmlNode subElem=xmldoc.CreateElement("昵称");
//设置“昵称”元素的值
subElem.InnerText=name.Text;
//将“昵称”元素设置为“论坛成员”元素的子元素
newElem.AppendChild(subElem);
//创建“最新时间”元素
subElem=xmldoc.CreateElement("最新时间");
//获得当前时间
System.DateTime currentTime=new System.DateTime();
currentTime=System.DateTime.Now;
//设置“最新时间”元素的值
int minute=currentTime.Minute;
String str=minute.ToString();
subElem.InnerText=str;
//将“最新时间”元素设置为“论坛成员”元素的子元素
newElem.AppendChild(subElem);
//将新建的“论坛成员”元素添加到onlineuser.xml中
xmldoc.DocumentElement.AppendChild(newElem);
//保存添加了信息的onlineuser.xml
xmldoc.Save(Server.MapPath("/chatbase/onlineuser.xml"));
//添加管理员的欢迎信息到聊天信息文件chatnews.xml中
xmldoc.Load(Server.MapPath("/chatbase/chatnews.xml"));
XmlNode root=xmldoc.DocumentElement;
//聊天信息保存在“在线信息”元素中
//“在线信息”元素包括“发送者”、“接收者”、“表情”
//“悄悄话”、“颜色”和“消息”等子元素
//创建新的“在线信息”元素
newElem=xmldoc.CreateElement("在线信息");
//创建“发送者”子元素
subElem=xmldoc.CreateElement("发送者");
subElem.InnerText="管理员";
//将“发送者”子元素添加到“在线信息”元素中
newElem.AppendChild(subElem);
//创建“接收者”子元素
subElem=xmldoc.CreateElement("接收者");
subElem.InnerText="大家";
//将“接收者”子元素添加到“在线信息”元素中
newElem.AppendChild(subElem);
//创建“表情”子元素
subElem=xmldoc.CreateElement("表情");
subElem.InnerText="";
//将“表情”子元素添加到“在线信息”元素中
newElem.AppendChild(subElem);
//创建“悄悄话”子元素
subElem=xmldoc.CreateElement("悄悄话");
subElem.InnerText="False";
//将“悄悄话”子元素添加到“在线信息”元素中
newElem.AppendChild(subElem);
//创建“颜色”子元素
subElem=xmldoc.CreateElement("颜色");
subElem.InnerText="";
//将“颜色”子元素添加到“在线信息”元素中
newElem.AppendChild(subElem);
//创建“消息”子元素
subElem=xmldoc.CreateElement("消息");
subElem.InnerText="***"+name.Text+"***加入论坛";
//将“消息”子元素添加到“在线信息”元素中
newElem.AppendChild(subElem);
//将新建的“在线信息”元素添加到聊天信息文件chatnews.xml前面
root.InsertBefore(newElem,root.FirstChild);
xmldoc.Save(Server.MapPath("/chatbase/chatnews.xml"));
//成功登录后自动进入论坛聊天室
Response.Redirect("chatroom.aspx");
}
</script>
<html>
<head>
<title>XML在线论坛</title>
</head>
<body>
<center>
<h3>
欢迎光临XML在线论坛
</h3>
<hr>
输入<i>昵称</i>和<i>口令</i>后登录论坛
<form method="post" action="http://localhost/chat/chatroom.aspx" target="_parent" runat="server">
昵称:<asp:textbox TextMode="SingleLine" id="name" runat="server" />
<p />
口令:<asp:textbox TextMode="Password" id="password" runat="server" />
<p />
<asp:button Text="登录论坛" OnClick="check_log" runat="server" />
</form>
新用户请选择<a href="logonnew.aspx">注册新用户</a>
<p />
你来自 <b>
<%=Request.ServerVariables["Remote_addr"] %>
</b>;是论坛的第 <b>
<asp:Label ID="number" Runat="server"></asp:Label>
</b>位访客
<p />
<asp:Label ID="checked_news" Runat="server" ForeColor="#ff0000"></asp:Label>
</center>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -