源码:https://github.com/hacfins/thinkphp6-api/blob/master/app/common/third/MapService.php

类似的博客很多,五花八门,来个自己封装的函数,只需调用淘宝网 API 接口,即可获取公网或局域网所在的地理位置信息。
直接上代码,很简单。

1、方案一

http://ip.taobao.com/

/*** 根据 Ip 获取地址位置*/
function getIpInfo($internetIp = '')
{try{//内网IP//  A类10.0.0.0~10.255.255.255//  B类172.16.0.0~172.31.255.255//  C类192.168.0.0~192.168.255.255//  ......$bLocalIp = !filter_var($internetIp, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);if($bLocalIp)$internetIp = 'myip';//局域网IP$requestAPi = "http://ip.taobao.com/service/getIpInfo.php?ip=" . $internetIp;$opts       = array('http' => array('method'  => 'GET','timeout' => 1, // 单位秒));$jsonArr = json_decode( file_get_contents($requestAPi, false, stream_context_create($opts)),JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_HEX_APOS );// 说明断网if (!isset($jsonArr) || !isset($jsonArr['code'])){return false;}// 0 表示成功if ($jsonArr['code'] !== 0){return false;}// 返回的数据结果://  "ip": "223.98.166.115",//  "country": "中国",//  "area": "",//  "region": "山东",//  "city": "济南",//  "county": "XX",//  "isp": "移动",//  "country_id": "CN",//  "area_id": "",//  "region_id": "370000",//  "city_id": "370100",//  "county_id": "xx",//  "isp_id": "100025"$data = (array)$jsonArr['data'];return $data;}catch (\Exception $e){}return false;
}

淘宝网 API 接口有限制调用频率

2、方案二

http://ip-api.com/json/?lang=zh-CN
http://ip-api.com/json/115.191.200.34?lang=zh-CN

附录:获取 IP 地址

/*** 获取客户端IP地址* @param int $type [IP地址类型]* @param bool $strict [是否以严格模式获取]* @return mixed [客户端IP地址]*/
function client_ip($type = 0, $strict = false)
{$ip = null;// 0 返回字段型地址(127.0.0.1)// 1 返回长整形地址(2130706433)$type = $type ? 1 : 0;if ($strict) {/* 防止IP地址伪装的严格模式 */if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);$pos = array_search('unknown', $arr);if (false !== $pos) {unset($arr[$pos]);}$ip = trim(current($arr));} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {$ip = $_SERVER['HTTP_CLIENT_IP'];} elseif (isset($_SERVER['REMOTE_ADDR'])) {$ip = $_SERVER['REMOTE_ADDR'];}} else if (isset($_SERVER['REMOTE_ADDR'])) {$ip = $_SERVER['REMOTE_ADDR'];}/* IP地址合法性验证 */$long = sprintf("%u", ip2long($ip));$ip = $long ? [$ip, $long] : ['0.0.0.0', 0];return $ip[$type];
}

PHP 获取 IP 地址所在的地理位置信息/城市相关推荐

  1. PHP获取IP地址所在的地理位置

    PHP获取IP地址所在的地理位置 时间:2011-04-02 16:19来源:三知开发网 作者:许亮 点击: 787 次 http://www.sunchis.com/html/php/phpsour ...

  2. php 获取客户端位置信息_PHP中获取客户端IP地址所在的地理位置信息

    如何获得该IP所在的地理位置呢?腾讯的IP分享计划(http://fw.qq.com/ipaddress)和新浪的IP查询接口(http://int.dpool.sina.com.cn/iplooku ...

  3. python地址多少位_Python获取IP地址对应的地理位置信息!

    在学习中有迷茫不知如何学习的朋友小编推荐一个学Python的学习q u n 227 -435- 450可以来了解一起进步一起学习!免费分享视频资料 原理简介 利用了三个可以查询ip地址对应归属地的网站 ...

  4. php获取ip地址所在的地理位置的实现

    1,通过腾讯或者新浪提供的接口来获取(新浪和腾讯类似) <?php     function getIPLocation($queryIP){      $url = 'http://ip.qq ...

  5. phpip地址查询_PHP获取IP地址所在的地理位置

    /* *根据新浪IP查询接口获取IP所在地 */ function getIPLoc_sina($queryIP){ $url = 'http://int.dpool.sina.com.cn/iplo ...

  6. php 获取ip地址所在的区域

    /** * get_ip_lookup 获取ip地址所在的区域 * @param null $ip * @return bool|mixed */ function get_ip_lookup($ip ...

  7. IP地址库解析——读取IP地址获得实际地理位置信息的java源码实现

    说明:IP地址库来自QQwry.dat数据库文件,通过解析地址库当中的ip,已经细化最后获取的信息:获取ip地址对应的:国家 / 省 / 市 / 运营商ISP信息. 解析主要用到三个类: (1) IP ...

  8. PHP获取客户端设备类型,浏览器版本型号,IP地址,具体地理位置信息

    客户端设备类型(Windows.Mac.ihpone.Android.Linux等) //客户端设备类型(Windows.Mac.ihpone.Android.Linux等)function getC ...

  9. PHP获取IP地址以及IP地址所在位置

    获取IP地址: function getIP(){if (isset($_SERVER)) {if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {$realip ...

最新文章

  1. 允许自行设计赛道之后,参赛同学都想到了什么呢?
  2. oracle maa全称,OracleMAA参考架构.PDF
  3. 重磅!阿里巴巴和全球最大奢侈品电商YNAP成立合资公司
  4. TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作
  5. 壁纸图片|2020年12月游戏图片大全
  6. java----内省
  7. 制作课件的软件及特点作用
  8. word 宏相关代码集合
  9. 某知名网络安全公司的渗透测试工程师面试题实战汇总
  10. 计算机语言lc-3,GBT 15969.3-2005 可编程序控制器 第3部分 编程语言.pdf-全文可读
  11. Android 性能专项之 Memory Monitor 工具-memery
  12. ASP计算周开始和一年有多少周及某年第一周开始日期
  13. 一支雪糕卖66?钟薛高,你就偷着乐吧
  14. 2022年12月蓝桥STEMA评测C++中级组编程题
  15. 关于GMac和FLOPs讨论
  16. NFS挂载文件系统出现nfsnobody解决方式
  17. Vue中的methods配置项中的箭头函数this指向及相关源码分析
  18. django 实现显示图片功能
  19. 利用python获取自己的qq群成员信息!
  20. 指南针为什么不叫指北针

热门文章

  1. 超级筹码(牛市真空加速定律)
  2. Redis面试题总结(2022最新版)
  3. 刘畊宏男孩女孩看过来!运动数据分析挖掘!(附全套代码和数据集) ⛵
  4. 【ACWing】734. 能量石
  5. 用Android UEventObserver监听内核uevent
  6. CSS背景background详解,background-position详解
  7. [968]程序运行时报错:由于找不到mfc110.dll,无法继续执行代码的解决方法
  8. git地址变更 vs code 如何修改本地地址并查看
  9. PHP实现think-queue介绍
  10. K8S认证工程师(CKA)考试必过指南