php使用GeoIP库实例

 更新时间:2014年06月27日 10:40:44   投稿:junjie  
这篇文章主要介绍了php使用GeoIP库实例,本文给出了细分到国家、细分到城市的代码实例,需要的朋友可以参考下

需要注意的是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);

看自己开发环境和具体情况决定用哪种

相关文章

  • Smarty缓存机制实例详解【三种缓存方式】

    Smarty缓存机制实例详解【三种缓存方式】

    这篇文章主要介绍了Smarty缓存机制,结合实例形式详细分析了Smarty全局缓存、部分缓存及局部缓存三种缓存实现方式,并附带说明了Smarty清除缓存的实现方式,需要的朋友可以参考下
    2019-07-07
  • codeigniter上传图片不能正确识别图片类型问题解决方法

    codeigniter上传图片不能正确识别图片类型问题解决方法

    这篇文章主要介绍了codeigniter上传图片不能正确识别图片类型问题解决方法,这是一个不太常见的问题,但是遇到了的话会卡人很久,需要的朋友可以参考下
    2014-07-07
  • php去除HTML标签实例

    php去除HTML标签实例

    在php中要去除字符串中的HTML标签方法有很多种,最常用的就是使用strip_tags函数一并去了,只保留字符了,还在就是有选择性的去除了这里要用正则表达式了,下面写二个php去除HTML标签的小例子
    2013-11-11
  • ThinkPHP框架下整合支付宝支付功能图文教程

    ThinkPHP框架下整合支付宝支付功能图文教程

    这篇文章主要介绍了ThinkPHP框架下整合支付宝支付功能,结合图文形式详细分析了thinkPHP框架整合支付宝支付功能接口相关配置方法、操作技巧与相关注意事项,需要的朋友可以参考下
    2019-04-04
  • Yii基于数组和对象的Model查询技巧实例详解

    Yii基于数组和对象的Model查询技巧实例详解

    这篇文章主要介绍了Yii基于数组和对象的Model查询技巧,结合实例形式较为详细的分析了Yii针对数组及对象的Model查询使用技巧,需要的朋友可以参考下
    2015-12-12
  • 如何通过Linux命令行使用和运行PHP脚本

    如何通过Linux命令行使用和运行PHP脚本

    这篇文章主要介绍了如何通过Linux命令行使用和运行PHP脚本,PHP语言和C/Java以及嗲有一些PHP特性的Perl变成语言中的语法非常相似,当前比较稳定且最新的版本是5.6.10。PHP是一种HTML的嵌入脚本,很方便开发人员写出动态生成的页面,需要的朋友可以参考下
    2015-07-07
  • 基于PHP+Mysql简单实现了图书购物车系统的实例详解

    基于PHP+Mysql简单实现了图书购物车系统的实例详解

    这篇文章主要介绍了基于PHP+Mysql简单实现了图书购物车系统的实例详解,文章通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下 面随着小编来一起学习学习吧
    2020-08-08
  • Laravel5.5 手动分页和自定义分页样式的简单实现

    Laravel5.5 手动分页和自定义分页样式的简单实现

    今天小编就为大家分享一篇Laravel5.5 手动分页和自定义分页样式的简单实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • Codeigniter出现错误提示Error with CACHE directory的解决方案

    Codeigniter出现错误提示Error with CACHE directory的解决方案

    这篇文章主要介绍了Codeigniter出现错误提示Error with CACHE directory的解决方案,需要的朋友可以参考下
    2014-06-06
  • php生成静态页面的简单示例

    php生成静态页面的简单示例

    这篇文章主要介绍了php生成静态页面的简单示例,需要的朋友可以参考下
    2014-04-04

最新评论