PHP -我自己的麻烦



我做了自己的自定义计数器,来计算在我的网站上连接的人。这是代码:

$date=date("Y-m-d H:i:s");
$ip=$_SERVER['REMOTE_ADDR'];
$query=mysql_query("SELECT date, id FROM views WHERE ip='$ip' ORDER BY date DESC",$mydb);
if(mysql_num_rows($query)!=0){
    $id_ip=mysql_result($query,0,'id');
    $limit_time=strtotime("-20 minutes");
    $current_time=strtotime(mysql_result($query,0,'date'));
} else {
    $limit_time=$date;
    $current_time=0;
}
if(isset($_SESSION['nickname'])) {
    $user=$_SESSION['nickname'];
} else {
    $user="gtw@visitor";
}
if($current_time<$limit_time) {         
    $insert=mysql_query("INSERT INTO views (ip, user, date) VALUES ('$ip', '$user', '$date')", $mydb);
} else {
    if($user!="gtw@visitor") {
        $update=mysql_query("UPDATE views SET date='$date', user='$user' WHERE id='$id_ip'",$mydb);
    } else {
        $update=mysql_query("UPDATE views SET date='$date' WHERE id='$id_ip'",$mydb);
    }
}

问题是这样的:如果我连接到网站与相同的IP(所以,同样的电脑为例)与2个浏览器,我会用2个不同的用户名登录,它只是算作一个单一的访问者。有什么建议可以改善这种情况吗?

也许为每个连接添加一个从浏览器代理生成的HASH ?不知道…

正如您所注意到的,许多客户端可以共享相同的公共IP地址。

Google通过使用cookie解决了这个问题。这不是万无一失的,但这是你能做的最好的。您还可以使用此方法来跟踪网站上访问的页面顺序。

实际上,你应该使用现成的分析包,比如Google analytics。

您可以设置一个cookie,并在添加到计数器之前检查是否存在,尽管这可能会给您带来一些其他问题。你可能想看看wordpress统计计数器是如何实现的,或者,或者,去谷歌分析(除非你真的想滚你自己的:))

您可以将用户代理字符串添加到视图表中,以便每次访问将由元组(IP、日期、用户代理)组成。这将有助于将来自不同浏览器的相同IP的访问计数为两次不同的访问。

您可以使用$_SERVER['HTTP_USER_AGENT']获取用户代理字符串。

相关内容

  • 没有找到相关文章

最新更新