本计数器可以防止通过连续按下“刷新”来增加访客人数,但如果用户关闭浏览器,再次打开次网页,计数器的数字依然会增加。本例尚且无法解决此问题。此问题可以通过追踪IP地址来解决,但这不是本文要讨论的问题。
计数器的思路:一位访问者访问网页,服务器从一个文档里读取该页已被浏览的次数,加一,然后将这个数字在写回那个文档里,并在浏览器中显示加一后的次数。如果又有一位访问者浏览此网页,服务器又重复上述过程,从而实现了方可计数器。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</form>
</body>
</html>
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
public partial class NewFolder4_Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session.Add("a", 0);//注册Session对象,如果没有这一句,Session.IsNewSession的属性就一直是true
StreamReader objReader = new StreamReader(Server.MapPath("Counter.txt"));
long Counter = long.Parse(objReader.ReadLine().ToString());
objReader.Close();
if (Session.IsNewSession == true)//检查是否为第一次启动浏览器浏览网页
{
Counter += 1;
StreamWriter objWriter = new StreamWriter(Server.MapPath("Counter.txt"), false);
objWriter.WriteLine(Counter);
objWriter.Close();
}
string ss="";
for (int i = 0; i < Counter.ToString().Length; i++)
ss += "<img src=" + Counter.ToString().Substring(i, 1) + ".jpg>"; //0~9的图片的文件名为0.jpg,1.jpg,2.jpg......
Label1.Text = "您是第" +ss + "位访客";
Label2.Text = "最近一次浏览的时间为:"+DateTime.Now;
}
}
效果图如下: