使用新浪的接口获取用户当前IP的位置地点身份城市地区

首先,新浪的接口地址为http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js

你可以试着直接在浏览器中输入,他就返回一个json串,下面是例子

var remote_ip_info = {"ret":1,"start":"61.135.152.0","end":"61.135.152.255","country":"\u4e2d\u56fd","province":"\u5317\u4eac","city":"\u5317\u4eac","district":"\u6d77\u6dc0","isp":"\u8054\u901a","type":"","desc":""};

可以看到,这不是一个严格的json串,他的前面有一个变量名,我们是不需要的,最后一个分号也是不能解析的,所以我们要处理一下,下面是我的方法

//这里的$this->ip_arr就是那个接口地址,你可以自行定义
$ip=file_get_contents($this->ip_arr);
		$ip_arr = explode('=', $ip);
		$real_json = substr_replace($ip_arr[1],'',-1);
		$real_ip = json_decode($real_json,true);

最后获取的$real_ip就是一个数组了,类似我这个

Array
(
    [ret] => 1
    [start] => 61.135.152.0
    [end] => 61.135.152.255
    [country] => 中国
    [province] => 北京
    [city] => 北京
    [district] => 海淀
    [isp] => 联通
    [type] => 
    [desc] => 
)
当然像别的公司也有类似的接口

另外在网上还看到如下的方法,大家可以参考

补充一点:在网上找到另外一种方法:
代码如下:
$ip = $_SERVER['REMOTE_ADDR'];//这里的ip可以是你自定义的ip
$geoInfo = get_meta_tags(http://www.geobytes.com/IpLocator.htm?GetLocation&template=php3.txt&IpAddress=$ip);
/*
返回的数组信息如下,不过是英文版本的
Array
(
[known] => true //该IP地址是否可知,即是否有收录;
[locationcode] => CNGDGUAN //地址位置的代码,包含了国家、省份和城市;
[fips104] => CH //美国联邦信息处理标准的国家代码;
[iso2] => CN //iso2标准的国家代码;
[iso3] => CHN //iso标准的国家代码;
[ison] => 156 //用途未明
[internet] => CN //也是国家代码
[countryid] => 49 //国家ID;
[country] => China //国家名称;
[regionid] => 1361 //地区的id,即省份;
[region] => Guangdong //地区名称,即省份名称;
[regioncode] => GD //地区的代码或者缩写;
[adm1code] => CH30 //不清楚其含义;
[cityid] => 3539 //城市的ID;
[city] => Guangzhou //城市的名称;
[latitude] => 23.1170 //纬度;
[longitude] => 113.2500 //经度;
[timezone] => +08:00 //时区;
[certainty] => 78 //不清楚其含义;
)
*/


原文:http://www.phpall.cn/forum/read.php?tid=411


另外封装的一个方法(一个朋友提供):

复制代码
function address_baidu( $ip) {
$u = "";
$address = file_get_contents(" http://open.baidu.com/ipsearch/s?wd={ $ip}&tn=baiduip");
preg_match('#来自:<b>(.+)</b>#Ui', $address, $m);
return strval( $m[1]);
}
function GetRemoteIp( $default='127.0.0.1')
{
$ip_string = $_SERVER['HTTP_CLIENT_IP'].','. $_SERVER['HTTP_X_FORWARDED_FOR'].','. $_SERVER['REMOTE_ADDR'];
if ( preg_match ("/\d+\.\d+\.\d+\.\d+/", $ip_string, $matches) )
{
return $matches[0];
}
return $default;
}
$ip = GetRemoteIp();
$addr = address_baidu( $ip);
复制代码

以上这些出自 http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/07/06/1771892.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值