2013-01-19 95 views

回答

1
<?php 
// Author: www.easyjquery.com 
$ip = $_SERVER['REMOTE_ADDR']; 
// remember chmod 0777 for folder 'cache' 
$file = "./cache/".$ip; 
if(!file_exists($file)) { 
    // request 
    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true"); 
    $f = fopen($file,"w+"); 
    fwrite($f,$json); 
    fclose($f); 
} else { 
    $json = file_get_contents($file); 
} 

$json = json_decode($json,true); 
echo "<pre>"; 
print_r($json); 

?> 

Demo Link

+0

Kelley你可以編輯你的答案,並添加一些本地解決方案,我不想使用外部解決方案 我會接受你,如果你能做到這一點 –

+0

嗨邁克爾,檢查這裏,信息也可以下載js文件,以便您可以自己託管解決方案,希望幫助:) http://www.easyjquery.com/2012/11/geo-api-detect-clients-ip-country-city-with-javascript-php/ –

+0

類型2 - fopen(./ cache/72.193.132.49):無法打開流:沒有這樣的文件或目錄 - 在第9行 –

6

這是我獲得的國家與來訪者的IP一起的方式。

// this is where you get the ip 
$ip = $_SERVER['REMOTE_ADDR']; 

// this is where you include the code that gets the country 
// you can find the code for this file on the link below  
include("geoiploc.php"); 

// this is where you create the variable that get you the name of the country 
$country = getCountryFromIP($ip, " NamE "); 

php geo ip loc does not work

希望這有助於。

願代碼與你同在!

更新:

這是我一直在使用

$json = file_get_contents('http://ipinfo.io/' . $this->getIP()); 
    $data = json_decode($json); 
    return $data->country; 

也有這項服務的另一種方法,但我發現一個以上的要好得多......

'http://getcitydetails.geobytes.com/GetCityDetails?fqcn=' . $this->getIP() 

以下是獲取ip的好方法:

private function getIP() { 
    $server_keys = [ 
     'HTTP_CLIENT_IP', 
     'HTTP_X_FORWARDED_FOR', 
     'HTTP_X_FORWARDED', 
     'HTTP_X_CLUSTER_CLIENT_IP', 
     'HTTP_FORWARDED_FOR', 
     'HTTP_FORWARDED', 
     'REMOTE_ADDR' 
    ]; 

    foreach ($server_keys as $key) { 
     if (array_key_exists($key, $_SERVER) === true) { 
      foreach (explode(',', $_SERVER[$key]) as $ip) { 
       if (filter_var($ip, FILTER_VALIDATE_IP) !== false) { 
        return $ip; 
       } 
      } 
     } 
    } 
} 

希望它可以幫助別人!

+1

這裏是geoiploc.php文件的完整文檔:http://chir.ag/ projects/geoiploc/ – Daniel

+0

非常感謝Daniel,如果您使用geoiploc ... 您是否慢慢了解它? –

+0

我確實使用它,我使用它來記錄我的網站的訪問,並且很高興有國家存儲。如果我慢慢收到它,你的意思是什麼? – Daniel