QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1903|回复: 4

[PHP开发] php根据IP地址获取地理位置

[复制链接]

226

主题

236

帖子

657

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
657
发表于 2016-2-2 13:30:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  1. <?php
  2.     header("Content-type: text/html; charset=utf-8");
  3.     //获取IP地址的方法
  4.     function getIP(){
  5.         if (isset($_SERVER)) {
  6.             if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  7.                 $realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  8.             } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
  9.                 $realip = $_SERVER['HTTP_CLIENT_IP'];
  10.             } else {
  11.                 $realip = $_SERVER['REMOTE_ADDR'];
  12.             }
  13.         } else {
  14.             if (getenv("HTTP_X_FORWARDED_FOR")) {
  15.                 $realip = getenv( "HTTP_X_FORWARDED_FOR");
  16.             } elseif (getenv("HTTP_CLIENT_IP")) {
  17.                 $realip = getenv("HTTP_CLIENT_IP");
  18.             } else {
  19.                 $realip = getenv("REMOTE_ADDR");
  20.             }
  21.         }
  22.         return $realip;
  23.     }
  24.    
  25.     echo $ip = getIP();

  26. //通过php的file_get_contents()方法获取地理位置
  27. //新浪接口根据ip查询所在区域信息

  28. $res0 = file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$ip");
  29. $res0 = json_decode($res0,true);
  30. print_r($res0);
  31. echo "<br/>";

  32. //淘宝接口根据ip查询所在区域信息

  33. $res1 = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=$ip");
  34. $res1 = json_decode($res1,true);
  35. print_r($res1);
  36. echo "<br/>";


  37. //通过php的curl获取地理位置
  38. //新浪根据IP获取地理位置API

  39.     $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$ip';
  40.     $ch = curl_init($url);
  41.     curl_setopt($ch,CURLOPT_ENCODING ,'utf8');
  42.     curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  43.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
  44.     $location = curl_exec($ch);
  45.     $location = json_decode($location);
  46.     print_r($location);
  47.     curl_close($ch);
  48.      
  49.     $loc = "";
  50.     if($location===FALSE) return "";
  51.     if (empty($location->desc)) {
  52.         $loc = $location->province.$location->city.$location->district.$location->isp;
  53.     }else{
  54.         $loc = $location->desc;
  55.     }
  56.     echo  $loc;


  57. //腾讯根据IP获取地理位置API

  58.     $url = 'http://ip.qq.com/cgi-bin/searchip?searchip1=$ip';
  59.     $ch = curl_init($url);
  60.     curl_setopt($ch,CURLOPT_ENCODING ,'gb2312');
  61.     curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  62.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
  63.     $result = curl_exec($ch);
  64.     $result = mb_convert_encoding($result, "utf-8", "gb2312"); // 编码转换,否则乱码
  65.     curl_close($ch);
  66.     preg_match("@<span>(.*)</span></p>@iU",$result,$ipArray);
  67.     $loc = $ipArray[1];
  68.     echo $loc;
复制代码


642

主题

801

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
10818
发表于 2016-2-2 18:15:32 | 显示全部楼层
感谢楼主分享
招募核心会员担任PHP-Z版主和管理员,共同管理论坛和群组,有意者在论坛发消息联系我

0

主题

59

帖子

1101

积分

中级会员

Rank: 3Rank: 3

积分
1101

灌水之王

发表于 2016-2-3 09:43:41 | 显示全部楼层
感谢楼主分享
Life is the art of drawing without an eraser.

5

主题

28

帖子

78

积分

新手上路

Rank: 1

积分
78
发表于 2016-2-29 14:12:30 | 显示全部楼层
为什么让我的IP地址调不到

2

主题

16

帖子

232

积分

新手上路

Rank: 1

积分
232
发表于 2016-3-1 11:26:07 | 显示全部楼层
感谢楼主分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

     
    战略合作|联系方式|广告赞助|商务合作|手机版|小黑屋|( 京ICP备14036609号-6 )

GMT+8, 2017-6-28 03:11

© 2013-2017 Powered by Discuz! X3.3. 本站由 又拍云 提供 CDN 图片存储服务 七牛 提供 CDN 静态文件加速服务

快速回复 返回顶部 返回列表