本人现在要统计一下信息:
1.网站的在线人数和历史访问人数。
2.网站中每篇文章的点击量,也就是曾经有多少人看过,
3.要将以上数据存入数据库。请问大侠,这些怎么实现,能提供点思路或者代码吗?谢谢~!

解决方案 »

  1.   

    在Global.asax的Session_Start即新会话启用时获取有关的信息,同时在这里实现在线人数、访问总人数的增量统计,代码如下:void Session_Start(object sender, EventArgs e) 
    {
    //获取访问者的IP
    string ipAddress = Request.ServerVariables["REMOTE_ADDR"];
    //获取访问者的来源
    string ipSrc;
    //判断是否从搜索引擎导航过来的
    if (Request.UrlReferrer == null)
    {
    ipSrc = "";
    }
    else
    {
    //获取来源地址
    ipSrc = Request.UrlReferrer.ToString();
    }
    //获取访问时间
    DateTime ipDatetime = DateTime.Now;
    //保存IP信息到数据库中
    IPControl cont = new IPControl();
    cont.AddIP(ipAddress, ipSrc, ipDatetime);//获取用户访问的页面
    string pageurl = Request.Url.ToString();
    //判断访问的是否是默认页
    if (pageurl.EndsWith("IPStat.aspx"))
    {
    //锁定变量
    Application.Lock();
    //为页面访问量+1
    Application["StatCount"] = int.Parse(Application["StatCount"].ToString()) + 1;
    //解锁
    Application.UnLock();
    }//锁定变量 
    Session.Timeout = 10; //设定超时为10分钟
    Application.Lock();
    Application["countSession"] = Convert.ToInt32(Application["countSession"]) + 1;  //访问总人数+1
    Application["onlineWhx"] = (int)Application["onlineWhx"] + 1; //在线人数加+1
    Session["login_name"] = null;
    //解锁
    Application.UnLock();
    }提醒一句,别忘了下面的代码,以实现在用户离线时,将在线人数减去1.void Session_End(object sender, EventArgs e) 
    {
    // 在会话结束时运行的代码。 
    // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
    // 或 SQLServer,则不会引发该事件。//锁定变量
    Application.Lock(); 
    Application["onlineWhx"] = (int)Application["onlineWhx"] - 1; //在线人数减-1
    Session["login_name"] = null;
    //解锁
    Application.UnLock();
    }
      

  2.   

    Global.asax里面的Session_Start,Session_End
    Application的应用.
    就是,网上很多.可以自己查查看.另外,2楼的朋友写得也不错.
      

  3.   

    对头,别人做好了的,你在网页上加一点js代码就可以了。自己做毕竟还是花时间,而且做得没有别人全面。51La、yahoo的都还不错。