我现在想统计各个文章的点击次数。  我想可以通过session来实现,一个会话为点击一次,但具体不知如何实现  有做过的给传授下经验啊 ~~~~~~~~~~~~~~~

解决方案 »

  1.   

    统计数不能用session来搞,要用application或是全局变量
      

  2.   

    application +1 这样的东西session大材小用了
      

  3.   

    如果你要求一个用户只能点击一次,那么Session必须保持文章的ID然后刷新的时候判断文章的ID在不在Session里面。例如 
          ArrayList al = new ArrayList();        if (Session["ID"] != null)
            {
                al = (ArrayList)Session["id"];
                if (!al.Contains("文章ID"))
                {
                    //更新数据
                    al.Add("文章ID");
                }
            }
      

  4.   

    不清楚楼主想要什么效果,我做过类似的统计,你是想根据ip来判断,同一ip多次访问算一次统计吗?
    还是怎么回事?
      

  5.   

    参考:http://download.csdn.net/source/290299
      

  6.   

    点击的时候获取文章ID 然后存入SESSION 定期更新到数据库。。或者Timer也可以。。取Session异步更新等。参考
      

  7.   

    判断IP就行了 一个IP只能一天点一次。
      

  8.   

    用appliction 
    先建TXT文件 再建一个Application_Start 在其中获取文件路径,读取文件 建一个 Session_Start 当新会话产生时进行 Application+1操作  建Application_End 当程序结束时把Application的值写入TXT文件中。这个写法可以防刷新,但当用户重新打开程序重复统计如果要限制用户一天只能访问1次可以考虑判断Ip
      

  9.   

    .......你一开始就说用Session的。如果你要做到这个功能,必须要有一个点击记录表。用户IP,文章ID,时间。判断时间是不是当天。如果有就不添加记录,如果没有就添加一条新记录。IP可以用 1public string GetUserIP()
     2   {
     3       string _userIP;
     4       if(Request.ServerVariables["HTTP_VIA"] == null)
     5         {
     6             userIP= Request.UserHostAddress;
     7         }
     8       else
     9        {
    10           userIP= Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    11        }
    12       return userIP;
    13    }如果担心IP会更换,那么用mac地址好了。 1[DllImport("Iphlpapi.dll")] 
     2  private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length); 
     3  [DllImport("Ws2_32.dll")]
     4  private static extern Int32 inet_addr(string ip);
     5
     6  private void Page_Load(object sender, System.EventArgs e)
     7  {
     8   // 在此处放置用户代码以初始化页面
     9   try
    10   {
    11    string userip=Request.UserHostAddress;
    12    string strClientIP = Request.UserHostAddress.ToString().Trim();
    13    Int32 ldest = inet_addr(strClientIP); //目的地的ip 
    14    Int32 lhost = inet_addr("");   //本地服务器的ip 
    15    Int64 macinfo = new Int64(); 
    16    Int32 len = 6; 
    17    int res = SendARP(ldest,0, ref macinfo, ref len);
    18    string mac_src=macinfo.ToString("X");
    19    if(mac_src == "0")
    20    {
    21     if(userip=="127.0.0.1")
    22      Response.Write ("正在访问Localhost!");
    23     else
    24      Response.Write ("欢迎来自IP为" + userip + "的朋友!" + "<br>");
    25     return;
    26    }
    27
    28    while(mac_src.Length<12)
    29    {
    30     mac_src = mac_src.Insert(0,"0");
    31    }
    32
    33    string mac_dest="";
    34
    35    for(int i=0;i<11;i++)
    36    {
    37     if (0 == (i % 2))
    38     {
    39      if ( i == 10 )
    40      {
    41       mac_dest = mac_dest.Insert(0,mac_src.Substring(i,2));
    42      }
    43      else
    44      {
    45       mac_dest ="-" + mac_dest.Insert(0,mac_src.Substring(i,2));
    46      }
    47     } 
    48    }
    49
    50    Response.Write ("欢迎来自IP为"+userip+ "<br>" + ",MAC地址为"+mac_dest+"的朋友!" 
    51
    52     +   "<br>");
    53   }
    54   catch(Exception err) 
    55   { 
    56    Response.Write(err.Message);
    57   }
    58  }
    59
      

  10.   

    为何不用application呢,用session也行,但是,要存到数据库,在相应的数据表中建立相应的字段即可
      

  11.   

    可以把当前用户访问的帖子编号全部放在cookie里,cookie的有效期设为1天,
    文章的表里面应该有个访问次数的列,用户每次访问,在cookie里面找帖子编号,找不到就给数据库+1,找到就不加
      

  12.   

    在Page_Load执行更新操作。protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {            int i = 0;
                if (int.TryParse(Request.QueryString["fid"], out i))
                {
                    if (i > 0)
                    {
                        ShowFQAByNID(i);
                        FQAInfoService.AddClicksByFID(i); //计算点击率
                        ShowNextFqa();
                    }
                }
                else
                {
                    Response.Redirect("induNews.aspx");
                }
            }
        }
    //===========操作数据库方法==============
    /// <summary>
            /// 页面载入,则增加一次点击率
            /// </summary>
            /// <param name="nid"></param>
            public static void AddClicksByFID(int fid)
            {
                string sql = "update FQAInfo set F_Clicks=F_Clicks+1 where FID=@fid";
                OleDbParameter par = new OleDbParameter("@fid", fid);
                SqlHelper.ExecuteCommandNotReturn(sql, par);
            }上面是最简单的点击率计算。
    楼主要做得精细点的话需要动用IP获取、IP记录时间等等操作。存储过程要用上了