2017-05-04 66 views
0

我想獲得用戶的當前lat和長從PHP用symfony我使用下面的代碼,但它不給我正確的結果,用戶的經緯度沒有得到適當的

$new_arr[] = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip=' . $_SERVER['REMOTE_ADDR'])); 
     if ($new_arr) { 
      $Latitude = $new_arr[0]['geoplugin_latitude']; 
      $Longitude = $new_arr[0]['geoplugin_longitude']; 
     } 

任何人可以幫助我解決這個問題?

+0

迴應有什麼問題?緯度/經度不正確?是否有語法錯誤? – Phylogenesis

+0

該API不是100%準確的,對於某些地址,它可能只是提供國家代碼,而不是更具體的地區,如地區或城市。如果你沒有這些信息,你也不會知道經緯度。對於我的知識產權,它只是顯示國家,但沒有更多。 – Qirel

+0

使用該特定的網站來獲得我的ip和位置表明我在加利福尼亞州的el segundo ....我在英國,所以也許使用更可靠的來源 – RamRaider

回答

0

考慮到你這裏不需要代理的一段代碼我用了一個項目:

function getIP() 
{ 
    $ip = $_SERVER['REMOTE_ADDR']; 
    return ($ip == "::1") ? "" : $ip; 
} 

$location = simplexml_load_string(file_get_contents('http://freegeoip.net/xml/'.getIP(), false)); 

$longitude = $location->Longitude; 
$latitude = $location->Latitude; 

與代理:

$opts = array('http' => array('proxy' => 'ASK YOUR SYSADMIN', "request_fulluri" => true)); 
$context = stream_context_create($opts); 

function getIP() 
{ 
    $ip = $_SERVER['REMOTE_ADDR']; 
    return ($ip == "::1") ? "" : $ip; 
} 

$location = simplexml_load_string(file_get_contents('http://freegeoip.net/xml/'.getIP(), false, $context)); 

$longitude = $location->Longitude; 
$latitude - $location->Latitude; 
0

您使用的是不放棄的API確切的輸出,所以我建議你使用GeoIP庫。

  • 在您的服務器上創建一個文件夾。
  • 下載在以下鏈接

這裏給出的文件下載的所有文件的鏈接:

請所有文件夾中的這些文件並重新命名GeoLiteCity.dat.gzGeoLiteCity.dat

// I am assuming that folder name is geoip and then include all files 
include ("geoip/geoipcity.inc"); 

include ("geoip/geoipregionvars.php"); 

$giCity = geoip_open("geoip/GeoLiteCity.dat", GEOIP_STANDARD); 

$ip = $_SERVER['REMOTE_ADDR']; 
$record = geoip_record_by_addr($giCity, $ip); 

echo "Getting Country and City detail by IP Address <br /><br />"; 
echo "IP: " . $ip . "<br /><br />"; 

// this array will give you all the details like address, city, state etc. 
print_r($record); 

所有最優秀的!