ct_pcounter:页面表  
id   purl     userip    usercookie         gid      vistime
1   1.php   127.0.0.1   20090616122345     gid   20090616122345
2   2.php   127.0.0.1   20090616122350     gid   20090616122350
3   1.php   127.0.0.1   20090617025639     gid   20090617025639
4   1.php   127.0.0.1   20090618010101     gid   20090618010101
5   1.php   127.0.0.1   20090619010101     gid   20090619010101计数器统计问题UV(独立访客)唯一访问者是指在一特定时间内第一次进入网站,具有唯一访问者标识(唯一地址)的访问者。这一特定时间建议为一整天。
UV的度量方法:在同一天内,只记录第一次进入网站的具有唯一访问者标识的访问者,在同一天内再次访问该网站则不计数。
IP(独立IP)一天之内相同IP地址访问您的网站只被计算1次。在一网吧上网,IP是一样的,比如有100机子,这100台机子都来访问你的网站,从中看出就有100个独立用户,现在问题出来,我在计算独立用户访问量的时候,该如何区别独立用户,我上面设计了一个表:
id 自增编号
purl 访问的页面
userid 用户IP
usercookie 独立用户标实
vistime 访问时间我的cookie现在设置的是系统时间,我觉得不可取,因为时间在不断的变化,这样看来,在同一台机子访问我的网站,每秒的记录都的插入到ct_pcounter表中,本来是一个独立用户的,现在变成了多个独立用户,请问有什么方法把这个usercookie唯一性标实出来?
我之前想过取电脑网卡的MAC地址,但是PHP取不到客户端的MAC地址,只能取到服务器端的。

解决方案 »

  1.   

    你可以设置第一次访问的时间啊,后面的判断一下不重新写入Cookies就行啦。
      

  2.   

    cookie设置存活时间,如果cookie存在且有效,就表示是同一用户.
    如果想保持唯一性,也可以用cookie保存session_id.如果不关闭当前游览窗口的话,则保证session_id唯一.
      

  3.   

    存活是时时变化的,你每刷新一个页面,cookie的值都不一样,也就是说,同一台机有不同用户了。  谢谢楼上的
      

  4.   

    我现在有思路了下面说说的思路吧
    ct_tpcounter表:
    id   purl     userip         usercookie       gid      vistime
    1   1.php   127.0.0.1        20090616122345   gid   20090616122345
    2   2.php   127.0.0.1                         gid   20090616122350
    3   3.php   127.0.0.1                         gid   20090616122350
    4   1.php   127.0.0.1        20090616122345   gid   20090617025639
    5   1.php   127.0.0.1        20090616122345   gid   20090618010101
    6   1.php   127.0.0.1        20090616122345   gid   20090619010101当用户第一次登录网站时,记录当前时间COOKIE值,访问其它页面做如下判断:
    if(cookie值 || 是否同一天){//不为空
    插入一条usercookie=null的记录
    }else{//为空
    插入一条usercookie=time()的记录
    }这样的话某个时间段:
    独立IP访问量:select count(distinct(userip)) as ipcount from ct_pcounter where vistime>2009-06-16 and vistime<2009-06-19
    结果是1独立用户访问量:select count(distinct(usercooike)) as usercount from ct_tpcounter where vistime>2009-06-16 and vistime<2009-06-19
    结果是5  再减去1=4即可Pageview:select count(id) as counts from ct_pcounter
    结果是6
    各位可以指点指点
      

  5.   


    保持每个Cookie的唯一性,与第一次访问写入的相同,在服务段做个记录(数据库),然后每次访问判断一下就知道啦。当然用SESSION也可以,SESSION也是用了Cookie的唯一ID的。