根据IP获取访客所在国家/城市/经纬度
安装GeoIP扩展:注意:Beta版要指定版本号.如果是apt安装的PHP,直接安装php5-geoip这个包即可. php.ini中加入:
免费下载GeoLiteCity数据库(解压后18MB): http://dev.maxmind.com/geoip/legacy/install/city/
测试:
在命令行用geoiplookup查看IP信息:
可见IP地址
geoip-database提供的GeoIP.dat只能精确到国家.
从maxmind官网下的数据库GeoLiteCity则信息更详细.
geoiplookup 61.145.122.155 则同时显示上述两个数据库的信息.
根据IP确定经纬度与计算距离
可以用
根据用户IP确定经纬度. 注意:
返回的西经和南纬是负数.
5000米转成经纬度: 纬度 Latitude: 1 deg = 110852 m 经度 Longitude: 1 deg = 111320*cos(lat) m 同一经线上,相差一纬度约为 110852 米 同一纬线上,相差一经度约为 111320*cos(lat) 米 (lat为该纬线的纬度)
数据库用户表中设两个字段,分别存储用户的经度lat和纬度lon.
这个范围是一个粗略的范围,下面计算距离后把超过5公里的用户去掉即可.
根据上面查询出来的用户的经纬度, 用半正矢公式(Haversine)根据经纬度计算两点间距离:
然后就可以用uasort或array_multisort由近到远列出用户了,比如有名为win,osx,lin这3个用户:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。