2011-12-19 96 views
0

谷歌搜索后,我发现许多解决方案似乎不工作或需要用户的许可。获取网站访问者位置的最佳方式是什么?

寻找的东西,很容易使用,PHP或JavaScript,并且不需要用户的权限。它不需要是最准确的。

+0

查看相关的问题到右边,这已经被问了很多 – 2011-12-19 03:28:37

+2

最好的方法是什么?问他们。否则,请使用GeoIP,并准备在很多情况下极其不准确。 – ceejayoz 2011-12-19 03:30:00

+1

使用geoIP,您将无法获得确切位置。使用HTML5来利用附近的Wifi接入点来获取更准确的位置需要用户许可,并且您无法绕过这一点。 – Dimme 2011-12-19 03:30:00

回答

4

谷歌Analytics(分析)是为这个伟大的(JavaScript的)。

编辑: 应该指出的是,谷歌Analytics(分析)有一个API来获取城市/国家信息和所有报告的信息,如果您需要以编程用它做什么 - http://code.google.com/apis/analytics/docs/

但是,如果这不是一个选项:

你可以得到一个网友ip PHP的$_SERVER['REMOTE_ADDR']

有了这一点,你可以使用PHP的GeoIP的库来地理定位它:http://php.net/manual/en/book.geoip.php

1

这是我使用(你可以通过$_SERVER['REMOTE_ADDR']获取IP,并把它传递给函数):

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

我想指出的是,通过从PHP的MaxMind查询GEO IP数据库是一个很好的解决方案是非常重要的,如果该网站的流量超出个人网站的流量,您将不得不投资MaxMind许可。有了将MaxMind集成到大批量电子商务零售网站的经验,成本可能非常高(尽管支付系统的好处非常值得)。

还有一个评论。 GeoIP仅适用于用户所连接的ISP本地DNS服务器的通用覆盖区域。这不是GPS。它一般不会落到街头。而且,如果用户通过代理,VPN等进行连接,则数据/信息是无用的。