PHP 使用 GeoLiteCity 库解析 IP 为地理位置

关于把 IP 地址转换为地理位置能够使用网络上不少的 API,好处就是不用在本地存储一个 IP 数据库,并且通常网络上的 IP 库会自动更新,不利的地方就是太依赖于网络,性能表现也可能会弱些。好比像下面的 API:php

http://api.hostip.info/get_html.php?ip=58.63.236.31
http://api.hostip.info/flag.php?ip=58.63.236.31html

这里介绍 PHP 如何使用 GeoLiteCity.dat 库把 IP 转换为地理位置,GeoLiteCity.dat 能够在http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 下,解压出 GeoLiteCity.dat,便可,咱们能够手动去更新新的 IP 库。java

下面 PHP 解析 IP 的过程参考自 WordPress 插件 Visitor Maps and Who's Online 的实现。能够找到该插件的两个文件 include-whos-online-geoip.php 和 visitor-maps.php 告诉了咱们怎么作。你能够点击这里的连接下载到这两个文件,我这里把 include-whos-online-geoip.php 更名为 geoipcity.inc.php,而后参考 visitor-maps.php 中的 get_location_info($user_ip) 函数,那么咱们能够写出本身的解析 IP 地址的程序 resolve_ip.php:python

执行后输出以下(能够做为系统脚本直接用 php resolve_ip.php 来执行):git

只要取你想要的数据就是了,里面还有诸如区号,邮编等数所,GeoLiteCity.dat 是个二进制文件,比普通文本要紧凑省空间。数据库

不知道您有没有多留一份心,有无浏览连接:http://geolite.maxmind.com/download/geoip/api/php/,是这样的:api

Geoip

看到 GeoIp 给咱们提供了很多的例子,那么多 sample.php,而实际上前面用到的 geoipcity.inc.php,就是 geopip.inc、geoipcity.inc 和 geoipregionvars.php 三个程序的内容合体。ruby

再往上看:网络

 

GeoIp

官方提供的 API 何止 PHP 啊,几乎能全线知足您的实际需求了,c、java、perl、python、vb、ruby、tcl 等......,放其余程序里之后也不用愁了。wordpress

再进到 http://geolite.maxmind.com/download/geoip/database/ 瞧瞧:

GeoIP

正考虑着呢,不是说 IPv4 快用净了吗?IPv6 的数据也正为咱们准备着呢?固然,天朝的 IPv9 恐怕永远不会有的。

本只是把 Visitor Maps and Who's Online 里的解析 IP 的作法抽出来用用,可总能不断 深刻再深刻,不知道可喜仍是可怕了。

相关文章
相关标签/搜索