我想通过点击链接统计这一链接的点击数,点击某一链接,每个用户只能点击一次,24小时内无论点击多少次将不再统计~~而且链接有很多,用户点击进一链接进行统计,再点击一次不进行统计,但是点击另一链接又能统计另一链接的点击数,这样的效果要怎么实现,请教高手解答~~
每一链接在数据库里都有一个字段来存储它的点击量,现在的问题是点击不同的链接要能进行识别该用户是否已点击过该链接

解决方案 »

  1.   

    这个有点像投票判断啊
     
      统计IP地址不准确,用户可能重启机器了IP就变了
     
     你可以直接获取用户机器CPU编号,每个机器的CPU编号不可能一样吧
    看看这个
    http://blog.csdn.net/pgameli/archive/2009/03/16/3994692.aspx
      

  2.   

    只能记录IP和MAC地址,但是手动改变MAC就不行了
      

  3.   

     首先要引用 System.Management.dll //取CPU编号
         public string GetCpuID()
          {
              try
              {
                  ManagementClass mc = new ManagementClass("Win32_Processor");
                  ManagementObjectCollection moc = mc.GetInstances();
      
                  string strCpuID = null;
                 foreach (ManagementObject mo in moc)
                 {
                     strCpuID = mo.Properties["ProcessorId"].Value.ToString();
                     break;
                 }
                 return strCpuID;
             }
             catch
             {
                 return "";
             }
     
         }
     
         //获取网卡mac地址
         public string GetMac()
         {
             try
             {
                 ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
                 ManagementObjectCollection queryCollection = query.Get();
                 foreach (ManagementObject mo in queryCollection)
                 {
                     if (mo["IPEnabled"].ToString() == "True")
                         return mo["MacAddress"].ToString();
                 }
                 return "";
             }
             catch
             {
                 return "";
             }
         }
      

  4.   

    用cookies记录就行了
    这个东西本身欺骗的价值就不大,没人会故意修改cookies来猛点击
    不用那么费事的,
      

  5.   

    不是的,我现在这个是需要无论用户有没有登录,就算是游客去点击了,也只记录一次比如说现在有三个链接a,b,c.
    一个用户点击了a链接,这时数据库a的统计字段就+1,然后用户再点击a,a的统计字段就不+1了,但是当用户去点击b的时候,b的统计字段+1我现在实现了的是点击链接之后链接的统计字段就+1,下次无论点击多少次都不加,但是没有实现的是点击别的链接也无法统计了
    这个做的方法是点击进去的时候,创建一个session,并且给session赋一个值,下次点击进去就判断session是否为null,但是这个并不能实现我要的至于楼上的朋友们说的用CPU编号,我不是很理解诸位的思路,能给我讲一下那个思路吗,我怎么都想不明白怎么去写代码让链接去识别当前链接被当前用户点击了还是没有点击
      

  6.   

    呃,你自己做个表关联下,给<a>标签加个整个系统中都不重复的ID。每次点击的时候都引发个js调用webservice更新点击数。
      

  7.   

    "我现在实现了的是点击链接之后链接的统计字段就+1,下次无论点击多少次都不加"
    既然这个已经实现了,那么给不同的链接添加不同的ID,一个ID对应一个链接,点相应链接时相应字段+1不就可以了么
      

  8.   

    楼主如果同session的话,用户在一天内第二次点链接(关了页面,重新输入网址,再访问这是服务器会产生另外一个session),那么又加1了。
    我觉得是用cookie能实现
      cookie的存活期是一天。在点击了链接时,产生一个记录该链接的id的cookie。这样就可以了啊~~
      

  9.   

    那如果我点完了一个链接之后,这个链接加一,我又要去点另外一个链接,就又得产生一个cookie了,然后每点一个链接都要取cookie来比较是否已加一,是这样吗?
    那要是我把浏览器的cookie禁用掉,那不是一样没用了?
      

  10.   

    很简单啊,在链接的地方加上唯一的标识,比分A链接的时候加上标识a,这样就可以统计了
    如果用户和游客都可以点击,要判断简单的就用IP来判断了。这样点击的时候判断IP是不是当天已经点击。否则+1就可以了
      

  11.   

    然后用另外一个表来保存IP,点击的链接,和时间。方便做(这样点击的时候判断IP是不是当天已经点击。否则+1就可以了
    )判断。
      

  12.   

    用这么复杂的技术吗,如果在浏览器中可考虑通过Session和Cookie结合的方式实现
      

  13.   

    按您说的这样,一个用户只能有一个唯一的IP吧,那点击一个链接之后,这个IP就被加上标志表示已经点击了,那该用户再去点击别的链接的时候,别的链接不是就不+1了吗
      

  14.   

    这就是为什么要加上标识a了。比如A链接的时候加上标识a你要加上链接的标识,因为保存的时候是的字段应该是:IP, 链接A,标识a(这个是是链接A唯一的,因为可能会出现url链接地址相同,但是某些条件不同的,所以一条链接要有相应的唯一的标识),时间。这样就可以去数据库查找IP,链接,标识,如果这3个都相同,表示是点击同个链接,否则就不是 
      

  15.   

    to yan267
      但是我的这个链接的url是通过数据库读出来绑定到控件上的,这个链接的标识要怎么加上去呢
      

  16.   

    绑定前就不能加点东西??其实有一个办法的:
    比方说你链接的url是www.sina.com
    你可以做一个页面来记录保存的操作:saveurl.aspx那么你绑定到控件上的链接应该是saveurl.aspx?A=www.sina.com&B=标识
    这样在saveurl.aspx做完判断是否+1的操作后,跳转到www.sina.com为了数据的正确和安全,你可以加密www.sina.com和标识
      

  17.   

    数据库里只有连接这个字段吗?没有主键吗?如果没有就用GUID生成唯一的标识。OK?
      

  18.   

    不是一对多,而是多对多啊~~比如,链接A被用户A点击之后,这个链接A计数+1,用户A再点击这个链接A,该链接A不会再+1,但是另外一个用户B来点击这个链接A,这个链接A又能+1了,但是用户A点击链接B的时候,链接B能+1
      

  19.   

    我觉得问题不大:首先设计一个表 用来存放3个链接的点击数;
    然后设计一个表:包括4个字段(ID,a,b,c)
    其中:ID 就是一个标识(例如:IP等);
    a,b,c(默认为整形0)表示3个链接;
    (0表示没有点击,1表示点击过);
    这样你当用户点击某个链接的时候 你查出来判断下应该就可以了
      

  20.   

    将登陆用户信息放入一个临时表,
    以记录登陆情况,
    这样应该就可以解决LZ的问题了,
    LZ的问题好像与IP等都无关啊.
      

  21.   


    赞同用CPU序列号和MAC地址做判断
    不过得注意:
    譬如笔记本,是有两块网卡的
      

  22.   

    链接的点击次数进行统计方案:http://www.617feng.cn/BLOG/Blogs/?l=396个人的一点想法,不知是否对你有帮助...
      

  23.   

    如果只允许登录后的用户点击的话,可以考虑把点击次数和链接ID和用户ID关联成一个表。
      

  24.   

    再加一个SESSION值用来保存连接地址,如果是NULL,就加一,否则不加.