如何使用Php从Ip地址获取国家/地区名称,而不使用商业GeoIP区域版。请帮助我吗?
答案 0 :(得分:7)
代码
$json = file_get_contents('http://freegeoip.appspot.com/json/66.102.13.106');
$expression = json_decode($json);
print_r($expression);
结果
stdClass Object
(
[status] => 1
[ip] => 66.102.13.106
[countrycode] => US
[countryname] => United States
[regioncode] => CA
[regionname] => California
[city] => Mountain View
[zipcode] => 94043
[latitude] => 37.4192
[longitude] => -122.057
)
获取国家/地区名称
echo $expression->countryname;
结果
United States
答案 1 :(得分:6)
我认为你不能简单地使用PHP,但我找到了一个可以使用的免费API解决方案。它需要简单的帖子和回复。 http://www.hostip.info/use.html
示例帖子: http://api.hostip.info/get_html.php?ip=12.215.42.19
示例回复: 国家:美国(美国) 城市:伊利诺伊州Sugar Grove
答案 2 :(得分:3)
答案 3 :(得分:2)
答案 4 :(得分:1)
如果你想在这里设置你自己的应用程序是上述解决方案的git源码,彼得(我总是喜欢自托管解决方案,而不是点击并依赖其他服务):
答案 5 :(得分:1)
使用geolocation api外部http://apinotes.com/ipaddress/ip.php?ip=27.62.184.235
示例:
{{3}}
URL: http://apinotes.com/ipaddress/ip.php
Parameter Name: ip
Value: 27.62.184.23 (ipv4 address)
通过IP地址中的IP地址获取国家/地区详细信息的示例
<?php
$ip = '27.62.184.235';
$json_data = file_get_contents("http://apinotes.com/ipaddress/ip.php?ip=$ip");
$ip_data = json_decode($json_data, TRUE);
if ($ip_data['status'] == 'success') {
?>
<p>Ip Address: <?php echo $ip_data['ip'] ?></p>
<p>Country Name: <?php echo $ip_data['country_name'] ?></p>
<p>Country Code: <?php echo $ip_data['country_code'] ?></p>
<p>Country Code (3 digit): <?php echo $ip_data['country_code3'] ?></p>
<p>Region Code: <?php echo $ip_data['region_code'] ?></p>
<p>Region Name: <?php echo $ip_data['region_name'] ?></p>
<p>City Name: <?php echo $ip_data['city_name'] ?></p>
<p>Latitude: <?php echo $ip_data['latitude'] ?></p>
<p>Longitude: <?php echo $ip_data['longitude'] ?></p>
<?php }
?>