PHP利用新浪IP接口,来实现IP地址定位具体城市

http://www.smohan.net/blog/14.html

站之前使用淘宝接口来实现IP和地域信息的转换,貌似最近淘宝IP服务器出错,导致file_get_contents无法获取内容并json返回,因此,换为较为稳定的新浪IP地址库来实现本站的一些功能。新浪提供了开放的IP地址库数据供开发者调用,调用地址:http://int.dpool.sina.com.cn/iplookup/iplookup.php,即可返回当前ip所在的省市信息。具体DEMO演示请参考本站 留言 版块

首先:我们来使用一个经常见到的函数getip()来实现IP的获取:


    
    
  1. function getip(){
  2. if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
  3. $ip = getenv("HTTP_CLIENT_IP");
  4. } else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
  5. $ip = getenv("HTTP_X_FORWARDED_FOR");
  6. } else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
  7. $ip = getenv("REMOTE_ADDR");
  8. } else if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
  9. $ip = $_SERVER['REMOTE_ADDR'];
  10. } else {
  11. $ip = "unknown";
  12. }
  13. return $ip;
  14. }

第二步:将获取到的IP地址传递个新浪IP接口,利用一个常用的函数file_get_contents来获取其json格式的返回值,这样我们就可以实现IP地址与对应省份城市的转换;


    
    
  1. function getLocation($ip=''){
  2. empty($ip) && $ip = getip();
  3. if($ip=="127.0.0.1") return "本机地址";
  4. $api = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$ip";
  5. $json = @file_get_contents($api);//调用新浪IP地址库
  6. $arr = json_decode($json,true);//解析json
  7. $country = $arr['country']; //取得国家
  8. $province = $arr['province'];//获取省份
  9. $city = $arr['city']; //取得城市
  10. if((string)$country == "中国"){
  11. if((string)($province) != (string)$city){
  12. $_location = $province.$city;
  13. }else{
  14. $_location = $country.$city;    
  15. }
  16. }else{
  17. $_location = $country;
  18. }
  19. return $_location;
  20. }

第三步:功能的实现


    
    
  1. echo getLocation(); //或者 echo getLocation("222.210.4.66");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值