检查ip用户名是由不同国家访问的

时间:2012-06-09 07:21:04

标签: php mysql geoip

我使用Maxmind geoip数据库来检索用户所在的国家/地区。我们在mysql中存储所有登录尝试,并且通常人们使用不同的ip登录。如果ip来自同一个国家,但这不是问题,但如果密码在主板上共享,你会看到所有使用它的国家。

我现在用它来检索国家和ip:

$ipaddress = (long2ip($row['ip']));
$country_name = geoip_country_name_by_addr($gi, "$ipaddress");
$country_iso =  geoip_country_code_by_addr($gi, "$ipaddress");

然后计算不同IP地址的数量:

$count_ip = "SELECT distinct ip FROM members WHERE username='".$row['username']."'";
$result_ip = mysql_query($count_ip);
$ips = mysql_num_rows($result_ip);

如果超过1,我会得到一条消息。

但我想比较用户名使用的所有IP地址的国家/地区代码,以便我可以看到不同国家/地区是否使用了用户名,然后发送消息。

我该怎么做?我有ip的数组,我需要首先检查ip的国家代码然后看它是否不同。

1 个答案:

答案 0 :(得分:1)

您的查询已经返回所有IP地址,因此您必须完成结果行:

$countries = array();
while ($row = mysql_fetch_array($result_ip, MYSQL_NUM)) {
    $ipaddress = (long2ip($row[0]));
    $countries[geoip_country_name_by_addr($gi, "$ipaddress")] = true;
}

if (count($countries) > 1) {
    // more than one countries have been used to sign in
}

顺便说一句,我假设您在查询中添加日期范围;否则你会对旅行的人产生负面影响; - )