我现在有个新闻资讯 点击查看详细的时候 者点击率加一 现在的问题是 当点击进入详细页的时候 恶意刷新的时候点击率会继续累加 因为我的添加操作是放在加载事件里面的  请这方面知道的告诉我下 怎么判断 怎么做  最后是一个IP只能计算一次    谢谢啊

解决方案 »

  1.   

    加载事件?
    是PAGELOAD吗? 是的话得到客户的IP 保存到服务器一个文件或者数据库中(随便你) 另外保存时间
    这样刷新的时候判断IP是否出现过了  
      

  2.   

    有个方法是可以获得ip地址的,好想是server.xx,我记不清了,你查下,然后每次加的时候你去判断一下是不是同一ip就好了
      

  3.   


    同一楼上判断IP,根据时间段间隔,在一定时间段内的IP只能算是一次
      

  4.   

    你记录点击数是直接写DB还是先写在临时变量,定期写入DB?
    如果直接写DB,你就将SessionID和IP同时设定为主键。
    一般要判定IP的话,最好结合判定Session(考虑到内网共IP出口问题)。
    不过做这种分析,建议还是用工具,例如WebTrends之类的东西,可以直接分析IIS日志。
      

  5.   

    建议在客户端点击后添加一个COOKIE 如果cookie存在 点击率就不增加 否则 加一
      

  6.   

    cookie可以清除在添加  所以不可行   保存数据库不行 如果是网吧那么一台机器不像个人机器  保存session是针对单客户的吗?
      

  7.   

    这个以前做过,没去判断ip
    新闻资讯应该是有链接地址的吧,比如<a></a>这种标签
    用脚本劫持一下标签的onclick事件,然后更新页面访问数。这样就不会存在刷新页面的时候记录数增加了。
    这种方式的缺点就是防止不了恶意刷记录,别人会做同样的劫持。
    记录ip的方法,可能导致局域网访问只被记录一次,记录数不正确。
      

  8.   

    你在A标签里添加点击事件是 运用ajax去掉后台添加方法吗?
      

  9.   

    呵呵 可以这个样子来说
    我们把所有点击的 信息用一张表存起来 但是这个时候 我并不计算他的点击录  等到晚上没有人去用
    然后 使用几个SQL就判断 真实 点击率应该是多少了 
    得到求情的Ip 网上又很多文章 然我想我页忘记了 好像是再request对象里面的
      

  10.   

    在ispostback里面计数,判断IP,规定时间点击加1,刚做完这个功能,呵呵
      

  11.   

    建立一个空白页面 a.aspx
    在a.aspx.CS文件的page_load()里写
    if(!ispostback)
    {
      //向数据库插入用户IP
      //1.判断这个IP今天是否已经加入过
      //2.判断这个IP的MAC地址SESSIONID今天是否已加入过
      //都满足则返回FALSE,满足1或不满足则+1。
      //如果不判断同IP多电脑的情况不判断2.
    }前台在HTML后加入
    </html>
    <script language="javascript" src="http://www.XXX.com/js/a.aspx"></script>
    我自己想的。。呵呵。。不知道可不可以
      

  12.   

    加个cookie就行
    然后判断cookie是否存在
      

  13.   

    楼主,可以使用应用全局应用全局类Global.asax,来进行点击量的控制
      

  14.   

    楼主,可以使用应用全局应用全局类Global.asax,来进行点击量的控制
    以下是代码:(可以用的话,要加分哦)
    <%@ Application Language="C#" %><script runat="server">    void Application_Start(object sender, EventArgs e) 
        {
            // 在应用程序启动时运行的代码
            Application.Lock();
            Application["counter"] = 0;
            Application["online"] = 0;
            Application.UnLock();
        }
        
        void Application_End(object sender, EventArgs e) 
        {
            //  在应用程序关闭时运行的代码    }
            
        void Application_Error(object sender, EventArgs e) 
        { 
            // 在出现未处理的错误时运行的代码    }    void Session_Start(object sender, EventArgs e) 
        {
            // 在新会话启动时运行的代码
            Application.Lock();
            Application["counter"] = (int)Application["counter"] + 1;
            Application["online"] = (int)Application["online"] + 1;
            Application.UnLock();    }    void Session_End(object sender, EventArgs e) 
        {
            // 在会话结束时运行的代码。 
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
            // 或 SQLServer,则不会引发该事件。
            Application.Lock();
            Application["online"] = (int)Application["online"] - 1;
            Application.UnLock();    }
           
    </script>
      

  15.   

    建议采用迂回方式,由新闻列表页向新闻页跳转必定要传一个参数,
    可以采用缓存的方式,在读取新闻的页面加入代码
    <%@ OutputCache Duration="3600" VaryByParam="ID" %>
    其中 VaryByParam参数值就是你传递的值,对其缓存,就可以防止频繁的刷新页面引起的恶意点击率