我的统计PHP脚本中的奇怪行为

时间:2013-09-09 08:23:42

标签: php logging ip

我刚刚创建了一个网站,在管理面板中有一个非常重要的统计模块,可以识别用户是否第一次访问该网站(唯一)还是已访问该网站(原始)。

识别用户是否唯一,脚本检查ip是否相同或是否存在cookie(在同一天)。

if( isset( $_COOKIE['c'] ) && !empty( $_COOKIE['c'] ) && ctype_alnum( $_COOKIE['c'] ) ) { 
$cookie = secure_field( $_COOKIE['c'] ); } else { $cookie = NULL; }

$res = mysqli_query( $con, "SELECT id FROM table WHERE ( ip = '$ip' OR id = '$cookie' ) 
AND DATE_FORMAT( datetime, '%d.%m.%y' ) = DATE_FORMAT( now(), '%d.%m.%y' ) 
ORDER BY datetime DESC LIMIT 1" );

if( mysqli_num_rows( $res ) == 0 ) { $unique = 1; } else { $unique = 0; }

和我一起这个脚本完美运行(我尝试使用很多浏览器,删除cookie,更改IP,......)。但现在我只是看到一个用户的奇怪行为,使用相同的IP,但它的所有访问都被注册为独一无二!

这里是注册记录(我已经掩盖了隐私权的IP):

2013-09-09 06:06:05 unique  112.201.***.*** Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (K...
2013-09-09 06:06:14 unique  112.201.***.*** Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (K...
2013-09-09 06:11:58 unique  112.201.***.*** Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (K...
2013-09-09 06:14:11 unique  112.201.***.*** Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (K...
2013-09-09 06:17:05 unique  112.201.***.*** Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (K...
2013-09-09 06:17:15 unique  112.201.***.*** Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (K..

这有可能吗?以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您永远不会设置$res,因此mysqli_num_rows会产生警告并导致false等于0。因此请求将始终是唯一的。

如果你正确插入ip并且sql是正确的,这应该可行:

$res = mysqli_query( $con, "SELECT id FROM table WHERE ( ip = '$ip' OR id = '$cookie' ) 
AND DATE_FORMAT( datetime, '%d.%m.%y' ) = DATE_FORMAT( now(), '%d.%m.%y' ) 
ORDER BY datetime DESC LIMIT 1" );

if( mysqli_num_rows( $res ) == 0 ) { $unique = 1; } else { $unique = 0; }

也: 你真的把ip插入表中吗?

您是否在phpmyadmin中手动检查了查询?这有用吗?