根据他们的IP地址将网站重定向到香港和西班牙?

时间:2014-04-10 13:46:35

标签: redirect ip geo

我正在尝试根据其所在国家/地区重定向网站。如何在不使用geoip的情况下获取国家/地区代码。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

我想你必须要求某方将IP地址映射到一个位置,从而检查其他问题,例如Identify country by IP addresss

我认为这样做的服务在内部依赖于持有区域数据的多种不同服务,因此它是使用它们的最简单的解决方案,而不是试图在您自己的服务中找到该国家。 / p>

答案 1 :(得分:0)

方法1

您可以使用geoIP进行apache重定向。同样的回答here也是如此。

方法2

在共享主机中很多时候,您无法安装其他模块。在这些情况下,您可以使用第三方API服务,例如http://www.geoplugin.net/

这是一个使用获取国家/地区详细信息的功能:

function getLocationInfoByIp(){
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = @$_SERVER['REMOTE_ADDR'];
    $result  = array('country'=>'', 'city'=>'');
    if(filter_var($client, FILTER_VALIDATE_IP)){
        $ip = $client;
    }elseif(filter_var($forward, FILTER_VALIDATE_IP)){
        $ip = $forward;
    }else{
        $ip = $remote;
    }
    $ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip));    
    if($ip_data && $ip_data->geoplugin_countryName != null){
        $result['country'] = $ip_data->geoplugin_countryCode;
        $result['city'] = $ip_data->geoplugin_city;
    }
    return $result;
}

Ref.

您可以使用上述功能重定向用户:

$visitor = getLocationInfoByIp();
if($visitor["country"]=="HK"){
//Redirect to Hong Kong Site.
}
elseif($visitor["country"]=="ES"){
//Redirect to Hong Kong Site.
}

方法3

您可以使用Hostip API。 More here.

http://api.hostip.info/country.php
  US

http://api.hostip.info/get_html.php?ip=12.215.42.19
  Country: UNITED STATES (US)
  City: Sugar Grove, IL
    IP: 12.215.42.19

http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true
  Country: UNITED STATES (US)
  City: Sugar Grove, IL
  Latitude: 41.7696
  Longitude: -88.4588
    IP: 12.215.42.19

http://api.hostip.info/get_json.php
  {"country_name":"UNITED STATES","country_code":"US","city":"Sugar Grove, IL","ip":"12.215.42.19"}

http://api.hostip.info/?ip=12.215.42.19
  [use the URL above for an example - XML too long to paste below]