1

我使用 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的国家代码,然后看看它是否不同。

4

1 回答 1

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
}

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

于 2012-06-09T07:37:28.947 回答