我正在尝试根据其所在国家/地区重定向网站。如何在不使用geoip的情况下获取国家/地区代码。任何人都可以帮助我吗?
答案 0 :(得分:0)
我想你必须要求某方将IP地址映射到一个位置,从而检查其他问题,例如Identify country by IP addresss。
我认为这样做的服务在内部依赖于持有区域数据的多种不同服务,因此它是使用它们的最简单的解决方案,而不是试图在您自己的服务中找到该国家。 / p>
答案 1 :(得分:0)
您可以使用geoIP进行apache重定向。同样的回答here也是如此。
在共享主机中很多时候,您无法安装其他模块。在这些情况下,您可以使用第三方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;
}
您可以使用上述功能重定向用户:
$visitor = getLocationInfoByIp();
if($visitor["country"]=="HK"){
//Redirect to Hong Kong Site.
}
elseif($visitor["country"]=="ES"){
//Redirect to Hong Kong Site.
}
您可以使用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]