程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php使用GeoIP庫實例

php使用GeoIP庫實例

編輯:關於PHP編程

需要注意的是maxmind是geoip數據庫的提供方,
同時也提供了很多語言的sample和api說明文檔。
比如php,和php的geoip庫是有很大區別的,包含使用方式,接口函數。
php官方的geoip需要配置php環境,加載geoip.dll庫,並在php.ini中指定GEOIP庫地址。
maxmind提供一系列 .inc 和 .php 對環境無依賴,只要支持php,直接require後即可使用。

一、GEOIP數據庫

http://dev.maxmind.com/geoip/geolite
細分到國家:GeoLite Country
細分到城市:GeoLite City

二、php官方geoip.dll庫

下載dll http://windows.php.net/downloads/pecl/releases/geoip/1.0.8/
修改php.ini,啟用geoip庫:
復制代碼 代碼如下:extension=php_geoip.dll
追加geoip段,指定數據庫位置:
復制代碼 代碼如下:[geoip]
geoip.custom_directory = "D:\php5.3\geo\"

測試代碼

注意geoip.dll中使用的 GeoIPCity.dat 即 GeoLiteCity.dat,用的時候注意看提示
復制代碼 代碼如下:
echo geoip_country_name_by_name( "8.8.8.8" ) . "\n";
print_r( geoip_record_by_name( "8.8.8.8" ) );
echo geoip_country_name_by_name( "61.139.2.69" ). "\n";
print_r( geoip_record_by_name(  "61.139.2.69" ) );

三、MaxMind官方php文件函數庫

文檔和示例:http://dev.maxmind.com/geoip/downloadable
修改maxmind示例中 sample.php 和 sample_city.php 中 GeoIP.dat/GeoLiteCity.dat 路徑為你自己的路徑
同一目錄用 “./GeoIP.dat” 或 “./GeoLiteCity.dat” 即可。
詳細到國家
復制代碼 代碼如下:
include("geoip.inc");
$gi = geoip_open( "./GeoIP.dat", GEOIP_STANDARD );
echo geoip_country_code_by_addr($gi, "8.8.8.8") . "\t" . geoip_country_name_by_addr($gi, "8.8.8.8") . "\n";
echo geoip_country_code_by_addr($gi, "61.139.2.69") . "\t" . geoip_country_name_by_addr($gi, "61.139.2.69") . "\n";
geoip_close($gi);

詳細到國家城市

復制代碼 代碼如下:
include("geoipcity.inc");
include("geoipregionvars.php");
$gi = geoip_open("./GeoLiteCity.dat",GEOIP_STANDARD);
 
$record = geoip_record_by_addr($gi,"8.8.8.8");
print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "\n";
print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "\n";
print $record->city . "\n";
print $record->postal_code . "\n";
print $record->latitude . "\n";
print $record->longitude . "\n";
print $record->metro_code . "\n";
print $record->area_code . "\n";
print $record->continent_code . "\n";
 
print "\n-----\n";
$record = geoip_record_by_addr($gi,"61.139.2.69");
print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "\n";
print $record->region . " " . $GEOIP_REGION_NAME[$record->country_code][$record->region] . "\n";
print $record->city . "\n";
print $record->postal_code . "\n";
print $record->latitude . "\n";
print $record->longitude . "\n";
print $record->metro_code . "\n";
print $record->area_code . "\n";
print $record->continent_code . "\n";
geoip_close($gi);

看自己開發環境和具體情況決定用哪種

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved