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

Php 检查ip用户名是否由不同国家访问,php,mysql,geoip,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_cou

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

您的查询已返回所有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
}

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

您的查询已返回所有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
}

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

为什么不能从ip地址数组中创建一个国家代码数组,然后检查国家是否相同?为什么不能从ip地址数组中创建一个国家代码数组,然后检查国家是否相同?