免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3378 | 回复: 2
打印 上一主题 下一主题

PHP获取用户IP所在地的信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-21 13:04 |只看该作者 |倒序浏览
转:JonathanYoung

PHP获取用户IP所在地的信息




最近项目中用到了获取用户IP所在地的信息,主要是为了从IP去判断用户所在的城市,现在的城市信息基本上有分几种
一种是用ID编号来关联城市的,还有使用缩写的代码来关联城市的。
我们通过IP去获取所在的用户的  城市的详细信息,比如运行以下的结果得到的是 "福建省福州市 电信"
可以得到用户的 省市及所使用的网络接入的信息
这里调用的是百度的开放查询接口,通过网页的方式去查询然后从返回的结果中去匹配我们所需要的信息,效果还行,代码在下面,还是能凑合着用的。
  1. 01 var_dump(getAddress('202.101.98.54','福州'));  

  2. 02   

  3. 03 function getAddress($ip=null,$address='') {  

  4. 04         $url = "http://open.baidu.com/ipsearch/s?wd={$ip}&tn=baiduip";  

  5. 05         $res = mb_convert_encoding(HttpRequest($url), 'UTF-8', 'GBK');  

  6. 06     //var_dump($res);  

  7. 07         if ( preg_match('#来自:<b>(.+)</b>#Ui', $res, $m) ) {  

  8. 08                 if (is_int(strpos($m[1], $address))) {  

  9. 09                         return $m[1];  

  10. 10                 }  

  11. 11         }  

  12. 12 }  

  13. 13   

  14. 14   

  15. 15 function HttpRequest($url, $data=array()) {  

  16. 16                 $ch = curl_init();  

  17. 17                 if (is_array($data) && $data) {  

  18. 18                         $formdata = http_build_query($data);  

  19. 19                         curl_setopt($ch, CURLOPT_POST, true);  

  20. 20                         curl_setopt($ch, CURLOPT_POSTFIELDS, $formdata);  

  21. 21                 }  

  22. 22                 curl_setopt($ch, CURLOPT_URL, $url);  

  23. 23                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  

  24. 24                 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);  

  25. 25                 curl_setopt($ch, CURLOPT_TIMEOUT, 2);  

  26. 26                 return curl_exec($ch);  

  27. 27 }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-07-21 14:37 |只看该作者
百度的ip数据不准确。

用纯真的 ip 库吧。

论坛徽章:
0
3 [报告]
发表于 2011-07-22 09:38 |只看该作者
能经常更新的IP数据最好了http://www.video-session.com/dianhuahuiyi/
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP