使用IP检测经度和纬度PHP


Using IP to detect Longitude and Latitude PHP

如何使用php或javascript跟踪使用IP地址的位置?类似这样的网站实现了:http://whatismyipaddress.com/ip/216.157.85.163

这是非常可能的,无论是使用PHP还是JavaScript。然而,有办法做到这一点,也有办法不这样做。就像生活中的一切一样,真的。

JavaScript

如果你的浏览器有navigator.geolocation对象存在,它可以通过GPS或众包wifi数据获得位置。对象属性和方法在MDN中有相当详细的描述。

这种方法的明显优点是用户的设备将返回地理位置,而不是访问者的IP地址。这意味着它能够通过代理,TOR等隧道。然而,这将提示用户输入位置——这是正确的,否则想象一下混乱。

使用它:

 if (navigator.geolocation && navigator.geolocation.getCurrentPosition) {
      navigator.geolocation.getCurrentPosition(function(position) {
      }, function() { alert("Couldn't get your position!"); });
 }

position将包含一个Position对象,其坐标在coords中。

PHP, JavaScript等:通过API

有许多api为您执行请求。你应该调查一下——谷歌提供了一个地理定位API,还有ipinfodb…有些公司对请求有上限,有些则没有。然而,它们是基于IP进行工作的。这意味着没有代理隧道和近似位置。

您需要访问GeoLocation数据库,将其发送到IP,它将返回IP的坐标和/或城市名称。

你可以检查到这个API开始:http://freegeoip.net/

或者,从这里获取数据来运行您自己的:http://dev.maxmind.com/geoip/legacy/geolite

或者,使用Google的API根据手机信号塔定位用户:https://developers.google.com/maps/documentation/business/geolocation/