如何在PHP中使用IP地址查找国家/地区?

时间:2014-02-19 10:42:03

标签: php ip

我有国家的IP范围。我正在检查此范围内的用户IP地址,如果为真,那么他能够看到该网站,否则他不会。 我使用以下代码,

$ip = $_SERVER['REMOTE_ADDR'];
   if(ip2long($ip) >= $ipstart && ip2long($ip) <= $ipend){
        return true;
    } 

我的问题是,如果有人来自不同的国家,假设ABC和他的笔记本电脑/笔记本电脑到另一个国家,假设XYZ然后上面的代码会在同一台笔记本电脑上工作吗?

ipv4和ipv6的上述情况怎么可能?

[编辑]

获取哪个IP地址$_SERVER['REMOTE_ADDR'],它是机器IP还是连接IP,以便我们知道他现在在这个国家?

由于

3 个答案:

答案 0 :(得分:6)

使用此API http://ipinfo.io

function ip_details($IPaddress) 
    {
        $json       = file_get_contents("http://ipinfo.io/{$IPaddress}");
        $details    = json_decode($json);
        return $details;
    }

    $IPaddress  =   $_SERVER['REMOTE_ADDR'];

    $details    =   ip_details("$IPaddress");

    //echo $details->city;   #Tamilnadu  
    //echo $details->country;  
    //echo $details->org;      
    //echo $details->hostname; 

答案 1 :(得分:1)

Php没有此功能。您应该构建数据库,或者只使用外部API来查找数据库。

http://ip-api.com 这是一个很好的/免费的。 只需解析那个响应。

答案 2 :(得分:1)

请参阅此link

您可以使用此功能从ip找到国家/地区名称,

function getLocationInfoByIp($ip_addr)
{
    $return_data  = array('country'=>'', 'city'=>'');
    $ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip_addr));
    if($ip_data && $ip_data->geoplugin_countryName != null)
    {
        $return_data['country'] = $ip_data->geoplugin_countryCode;
        $return_data['city'] = $ip_data->geoplugin_city;
    }
    return $return_data;
}

在此功能中传递IP地址,您将获得国家/地区信息...

对于IP地址,您可以使用以下地址之一作为IP地址,

$client_ip  = @$_SERVER['HTTP_CLIENT_IP'];
$forward_ip = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote_ip  = @$_SERVER['REMOTE_ADDR'];

希望这会对你有帮助......