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 的作法抽出來用用,可總能不斷 深刻再深刻,不知道可喜仍是可怕了。

相關文章
相關標籤/搜索