回答
有第三方解决方案Ipinfodb是一个我在过去使用的,我认为他们可以使用
MaxMind GeoIP是一个良好的服务。他们也有免费的城市级查询服务。
尽管此链接可能会回答问题,但最好在此处包含答案的重要部分并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – 2017-04-24 19:30:20
你可能想看看GeoIP Country Whois Locator在PHPClasses发现了一个PHP库。
尽管这个链接可能回答这个问题,但最好在这里包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – 2017-04-24 19:30:38
使用hostip.info服务试试这个代码:
$country=file_get_contents('http://api.hostip.info/get_html.php?ip=');
echo $country;
// Reformat the data returned (Keep only country and country abbr.)
$only_country=explode (" ", $country);
echo "Country : ".$only_country[1]." ".substr($only_country[2],0,4);
而不是爆炸回报你可以使用json作为回报。 http://api.hostip.info/get_json.php – Underdog 2014-10-08 11:56:04
$ json_string ='http://api.hostip.info/get_json.php?ip='.$_SERVER['REMOTE_ADDR']; $ jsondata = file_get_contents($ json_string); $ obj = json_decode($ jsondata,true); – Underdog 2014-10-08 12:02:52
该站点无法使用。 – Rohlik 2017-09-02 09:32:10
的IP给你一个相当不可靠的位置,你可以在与JS负载AJAX的位置,如果它是不是第一次有位置的关键。 (此外,用户需要的给你它的存取权限。)
尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – 2017-04-24 19:31:21
<?php
$user_ip = getenv('REMOTE_ADDR');
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$country = $geo["geoplugin_countryName"];
$city = $geo["geoplugin_city"];
?>
为PHP依赖于服务器,实时定位不能仅仅提供静态位置可以提供它是最好避免依赖于JS的位置,而不是使用PHP。但是,有必要对JS数据发布到PHP,以便它可以很容易地可以接触到服务器
<?php
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
$PublicIP = get_client_ip();
$json = file_get_contents("https://freegeoip.net/json/$PublicIP");
$json = json_decode($json ,true);
$country = $json['country_name'];
$region= $json['region_name'];
$city = $json['city'];
?>
<?php
$query = @unserialize (file_get_contents('http://ip-api.com/php/'));
if ($query && $query['status'] == 'success') {
echo 'Hey user from ' . $query['country'] . ', ' . $query['city'] . '!';
}
foreach ($query as $data) {
echo $data . "<br>";
}
?>
程序中使用此源试试这个代码。有用!
做或不做。没有“尝试”。一个好的答案***将总是解释所做的事情以及为什么这样做,不仅是为了OP,还是为了将来访问SO。 – 2017-04-24 19:31:04
嗨,我同意Ipinfodb让你当前的位置起作用,就像魅力一样。但有一点,我想知道如何安全地连接到api?获取当前位置的页面位于https中,并且连接到api位于http中。它给了我一个警告信息,指出网站有一些不安全的内容。对于开发者而言,我知道它并不令人担忧,但对用户来说,这可能会让他们感到震惊,因为他们没有任何关于它的技术信息。 – user1149244 2013-03-21 07:29:49