根据IP判断所在地区

进来因为ip跳转问题,很是头疼,国内的用的IP库多数是QQ纯真数据库,进来多发生不太准确的事情,所以找寻其他数据库,发现一家maxmind的国外网站提供这类数据库,就找来代码试试.

<?php
include("geoipcity.inc"); 
include("geoipregionvars.php");
// 打开数据文件
$gi = geoip_open("GeoLiteCity.dat",GEOIP_STANDARD);
$ip='61.167.115.194';

$record = geoip_record_by_addr($gi, $ip);   

//关闭数据库 
geoip_close($gi); 
 
//如果获取了相关数据 
if($record) 

    echo 'loadGeoInfo('. 
               '"'.   $_GET['q']   .'",'.         
//原始查询信息 
               '"'.   $ip   .'",'.                      //被查IP 
               '"'.   $record->country_code  
.'",'.    //国家代码(两位) 
               '"'.   $record->country_code3 
.'",'.    //国家代码(三位) 
               '"'.   $record->country_name  
.'",'.    //国家名称 
               '"'.   $GEOIP_REGION_NAME
[$record->country_code] [$record->region]   .'",'.
//地区名称 
               '"'.   $record->city   .'",'.      
//城市名称 
               $record->latitude   .','.                //纬度 
               $record->longitude   .')';               //经度 
              
}                                              
//如果数据库中不存在相关数据 
else 

    echo 'alert("The Information for '.$ip.' is not available now!"); '; 

?>

 

 

其中需要三个文件geoip.inc,geoipregionvars.php,geoipcity.inc 这三个文件都可以通过http://geolite.maxmind.com/download/geoip/api/php/这个地址下载到,还需要一个他们的数据库文件GeoLiteCity.dat 下载地址是http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 

这样这段程序就能运行起来了,获得的city是中文的拼音

如果你想换成中文的话,有一个google的api可以做到http://maps.google.com/maps/api/geocode/xml?address=Harbin&sensor=false 其中的“Harbin”就是所提供给他的city的中文拼音名称,这样google会返回一个xml数据,其中就有这个城市的中文名称,还有其他相关信息,想要什么就从这个xml中取吧。

只可惜最后测试结果发现这个库也不是很准确。哎,还是没解决这个问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值