使用MS Access& amp;活跃期

时间:2013-11-13 11:46:45

标签: asp.net session ms-access hitcounter

我正在尝试为我的网站创建一个点击计数器

我在网上看了很多例子,但大多数都没有我想要的正确表格。

例如,在我创建的大多数点击计数器上,我所做的只是按下刷新并且命中率上升。我不希望这样。 我也试过使用.xml文件,但无济于事。我只需按住F5键,我的命中就会上升。 所以我知道我需要使用数据库。我计划使用MS Access数据库,因为它很小(只有一个表),并且可以在发布时轻松放到网站上。

我对如何添加点击有一个大概的想法:

OleDbConnection conn = null;
OleDbDataReader reader = null;
try
{
    conn = new OleDbConnection(
    "Provider=Microsoft.Jet.OLEDB.4.0; " + 
    "Data Source=" + Server.MapPath("App_Data/TestDB.mdb"));
    conn.Open();

    OleDbCommand cmd = 
    new OleDbCommand("insert into Hits Values(" + hits + "", conn);
    cmd.ExecuteNonQuery();

}
catch (Exception e)
{
    Response.Write(e.Message);
    Response.End();
}

应该是这样的。它类似于我希望的SQL。 无论如何,我的问题是,当用户返回到该页面(Home)时,命中计数器递增。 我听说过积极的会议,并想知道这是否应该使用。如果这是正确的方法,我该如何在我的网站上完全实现它? 基本上,我如何确保Bob登录并使用该站点,访问所有页面5次,并且命中计数器仅注册一次?因此,当Jane登录该网站时,她看到她是第二个人(在Bob之后)查看此网站?

它是否会成为:

Session["logged"] = "On";
if(Session["logged"].ToString().Equals("On");
{
    hits = 1;
    //add the data to database

}

从这里我迷失了。 如果可以避免数据库支持.xml文件,那么活动会话是否仍然适用于此? 最后,我是否必须关注cookie?

请知道,Google分析提供免费服务,但我不想使用它们。我还需要学会自己开发这些东西。

由于

1 个答案:

答案 0 :(得分:0)

  

如果可以避免数据库支持.xml文件,那么活动会话是否仍然适用于此?最后,我是否必须关注cookie?

使用会话变量来跟踪您是否计算了“点击”。你真正想要跟踪的是访问而不是“点击”或“页面加载”。

在IIS中,会话在客户端访问期间持续。有一些陷阱。如果客户端不支持cookie,则每个页面加载将最终成为不同的会话。您可以使用IP和UserAgent的组合来检测何时发生这种情况,但这意味着您需要将其存储在数据库中,并在运行代码计算“命中”时以某种方式检查它。

除非您希望能够匹配客户会话以查看访问者是新用户还是之前在您的网站上,否则您根本不需要使用Cookie来完成此工作。当我构建这个时,我选择在客户端存储一个独特的“cookieid”,以便我能够检测到重复的访问者。