2011-12-19 2 views
0

После поиска в Интернете я нашел много решений, которые, похоже, не работают или требуют разрешения от пользователя.Каков наилучший способ получить местоположение посетителя сайта?

Ищите что-то легкое в использовании, PHP или Javascript и не требует разрешения пользователя. Это не должно быть самым точным.

+0

см. Связанные вопросы справа, это было задано очень много –

+2

Лучший способ? Спроси их. В противном случае используйте GeoIP и будьте готовы к тому, что во многих случаях это будет крайне неточно. – ceejayoz

+1

С geoIP вы не получите точное местоположение. Использование HTML5 для использования ближайших точек доступа Wi-Fi для получения более точного местоположения требует разрешения пользователя, и вы не можете обойти это. – Dimme

ответ

4

Google Analytics отлично подходит для этого (javascript).

EDIT: Следует отметить, что Google Analytics есть API, чтобы получить Город/Страна информацию и все данные отчетности, если вам нужно программно сделать что-то с ним - http://code.google.com/apis/analytics/docs/

Но если это не вариант:

вы можете получить пользователей IP с РНР $_SERVER['REMOTE_ADDR']

с этого, вы можете использовать библиотеку GeoIP PHP для Geolocate его: http://php.net/manual/en/book.geoip.php

1

Это то, что я использую (вы можете получить IP от $_SERVER['REMOTE_ADDR'] и передать его функции):

function GeoData($ip) 
    { 
     $Content =  CurlGet("http://api.hostip.info/get_html.php?ip=" . $ip . "&position=true"); 
     $ContentArr = explode("\n", $Content); 

     $Stack  = array(); 
     $Ctr  = 0; 

     foreach($ContentArr as $Item) 
     { 
      if($Ctr == 2) 
      { 
       $Ctr++; 
       continue; 
      } 

      if($Ctr == 6) 
       break; 
      $SingleItemArr = explode(":", $Item); 
      array_push($Stack, $SingleItemArr[1]); 
      $Ctr++; 
     } 

     $MappedStr  = array("country" => $Stack[0], "city" => $Stack[1], "latitude" => $Stack[2], "longitude" => $Stack[3], "ip" => $Stack[4]); 
     $JsonEncoded = json_encode($MappedStr); 

     return $JsonEncoded; 
    } 
1

Я думаю, что это очень важно отметить, что запрос к базе данных GEO IP из MaxMind через PHP является отличным решением , если сайт будет иметь какой-либо объем трафика, превышающий объем персонального сайта, который вам придется инвестировать в лицензию MaxMind. Имея опыт интеграции MaxMind для крупных торговых точек электронной коммерции, стоимость может быть довольно значительной (хотя преимущества в отношении платежных систем хорошо стоят).

Еще один комментарий. GeoIP только точно соответствует общей зоне покрытия локального DNS-сервера ISP, к которому подключен пользователь. Это не GPS. Как правило, он не переходит на уровень улицы. И, если пользователь подключается через прокси-сервер, VPN и т. Д., Данные/информация бесполезны.

Смежные вопросы