我制作了自己的自定义计数器,以统计在我的网站上连接的人。这是代码:
$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);
}
}
问题是:如果我使用2个浏览器连接到具有相同IP(例如,同一台计算机)的网站,我将使用2个不同的用户名进行登录,它只算作单个访问者。有什么建议可以改善这种情况吗?
也许为每个连接添加一个从BROWSER AGENT生成的HASH?说不上...
答案 0 :(得分:1)
正如您所注意到的,许多客户端可以共享相同的公共IP地址。
Google使用Cookie解决了这个问题。这不是万无一失的,但是你能做的最好。您可以使用此方法跟踪您网站上访问过的网页序列。
但实际上,您应该使用现成的分析软件包,例如Google Analytics。
答案 1 :(得分:0)
您可以设置一个cookie并在添加到计数器之前检查是否存在,但这可能会给您一些其他问题。你可能想看一下wordpress stat计数器是如何实现的,或者,也可以去google analytics(除非你真的想要自己动手:)。)
答案 2 :(得分:0)
您可以将用户代理字符串添加到视图表,以便每次访问都包含元组(IP,日期,用户代理)。这将有助于计算来自不同浏览器的相同IP的访问,作为两次不同的访问。
您可以使用$ _SERVER ['HTTP_USER_AGENT']获取用户代理字符串。