注册 登录
编程论坛 ASP.NET技术论坛

求助于大家了,要算历史访问人数

vsnet 发布于 2007-11-09 10:51, 2382 次点击
想请教大家一个问题:
我想统计一个网站首页的历史访问人数,应该怎么做?
我在首页的page-load事件里写,每次更新数据库加一。
不过这样做的话,不停的刷新也会增加。。。而我要做的是只在第一次开浏览器就加一,刷新的不算。
再开浏览器再加一。。。
就是不计算刷新的。
大家帮个忙。。谢谢拉啊。
11 回复
#2
ta86072007-11-09 12:03

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//代码
}


}

#3
vsnet2007-11-09 13:00

首先谢谢楼上的大哥的回复。

恩我就是这样试了的。但是不管用。
按照道理的话(!IsPostBack)里就是第一次加载的意思,但是我发现刷新页面它竟然还是更新人数了。不知道是怎么回事。。
大家帮帮忙啊。。。

#4
vsnet2007-11-09 19:14
up
up
up
.
.
.
#5
smoon2007-11-09 21:19
你把你写的代码贴出来大家看看就明白问题出在那了。。。也许是你别的地方出错了也不一定啊~
#6
vsnet2007-11-10 08:41
这是我首页的pageload里的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string connectionStr = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("student.mdb");
OleDbConnection con = new OleDbConnection(connectionStr);
OleDbCommand cmd = new OleDbCommand("update countguest set number+=1", con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
代码有问题吗?可以实现统计的功能,只是在刷新页面时也更改数据库了,为什么啊???我明明是写在!page.ispostback里面的啊。。。。。怎么样才能让刷新的不记数呢???
#7
guang2007-11-10 09:20

添加一个global.asax文件
然后在Application_Start里定义一个全局变量,如:Application["count"] = 0;
再在Session_Start里写Application["count"] = (int)Application["count"] +1;
再将Application["count"] 写进数据库里就可以了

#8
vsnet2007-11-10 10:44

先谢谢楼上大哥的回答。

如果我只要首页的访问量呢?

#9
guang2007-11-10 10:52

一样的,global.asax只执行一次

#10
bygg2007-11-10 12:49
同意,LZ那样的方法,很容易让数据库崩溃的
#11
冰彩虹2007-11-10 19:26
对,统计一般都是放在global.asax里的Application_Start方法里实现的
#12
卡卡艾2007-11-10 22:10
写在global.asax里面吧,反正我是这么做.
1