2010-01-04 72 views
7

如何使用Php使用商业版GeoIP地区版使用Php从IP地址获取国家/地区名称。请任何人帮助我?来自php的国家名称

+0

没有*商业* API或根本没有GeoIP API? – Gordon 2010-01-04 09:20:35

回答

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 
) 

要获得COUNTRYNAME

echo $expression->countryname; 

结果

United States 
+0

假设你有'json_decode()'只从PHP> = 5.2发货。 – Boldewyn 2010-01-04 09:42:13

1

如果你想在此设定自己的应用程序是上述方案的git的来源,由彼得(我总是喜欢自我托管的解决方案,而不是打和依靠一些o疗法服务):

FreeGeoIP Source Code

0

使用apinotes外部geolocation api

例子:

http://apinotes.com/ipaddress/ip.php?ip=27.62.184.235

URL: http://apinotes.com/ipaddress/ip.php 
Parameter Name: ip 
Value: 27.62.184.23 (ipv4 address) 

实例对于获得国家详细信息通过IP地址在PHP

<?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 } 
?>