当前位置:  开发笔记 > 编程语言 > 正文

PHP获取客户端+服务端IP及地理位置信息

IP:113.83.***.**返回状态:1IP范围Strat:113.83.0.0IP范围End:113.83.255.255国家:中国省份:广东城市:惠州区/县:线路:电信类型:描写:[PHP]代码01/**02*获取客户端+服务端IP及地理位置信息Sinai...">

 

IP:113.83.***.** 
返回状态:1 
IP范围Strat:113.83.0.0 
IP范围End:113.83.255.255 
国家:中国 
省份:广东 
城市:惠州 
区/县: 
线路:电信 
类型: 
描写:
 

[PHP]代码

01 /**
02  * 获取客户端+服务端IP及地理位置信息 Sina iplookup
03  *
04  * @Support:QQ 910111100 (JoY)
05  * @Time: 2012.10.11 15:50:00
06  * @HZapi.com (http://www.php100.com/)
07  *
08  */
09 //取得地理位置信息
10 function iplookup($ip=1){
11     if($ip){ //客户端
12         $userip=egetip_joy(); //客户端IP
13     }else{ //服务端
14         $domain=$_SERVER['HTTP_HOST'];
15         $userip=gethostbyname($domain);
16     }
17     //返回Sina地理位置信息
18     $json=@file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='.$userip);
19     $patterns = array();
20     $patterns[0] = '/var remote_ip_info = /';
21     $patterns[1] = '/;/';
22     $patterns[2] = '/\Wu/';
23     $find = array();
24     $find[0] = "";
25     $find[1] = "";
26     $find[2] = "%u";
27     $json = preg_replace($patterns, $find, $json); //过滤多余字符
28     $json_arr=json_decode($json,true);
29     return $json_arr;
30 }
31 //取得IP
32 function egetip_joy(){
33     if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown'))
34     {
35         $ip=getenv('HTTP_CLIENT_IP');
36     }
37     elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown'))
38     {
39         $ip=getenv('HTTP_X_FORWARDED_FOR');
40     }
41     elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown'))
42     {
43         $ip=getenv('REMOTE_ADDR');
44     }
45     elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown'))
46     {
47         $ip=$_SERVER['REMOTE_ADDR'];
48     }
49     $ip=preg_replace("/^([d.]+).*/","1",$ip);
50     return $ip;
51 }
52 /**
53  * 模拟JS里的unescape
54  *
55  * @Support:QQ 910111100 (JoY)
56  * @Time: 2012.09.29 15:50:00
57  * @HZapi.com (http://www.hzapi.com/)
58  * echo unescape('%u4e1c%u6e56%u82b1%u56ed4%u53f7%u5c0f%u533a');
59  */
60 function unescape($str) {
61     $str = rawurldecode($str);
62     preg_match_all("/(?:%u.{4})|.{4};|&#\d+;|.+/U",$str,$r);
63     $ar = $r[0];
64     foreach($ar as $k=>$v) {
65         if(substr($v,0,2) == "%u")
66         {
67             $ar[$k] = iconv("UCS-2","utf-8//IGNORE",pack("H4",substr($v,-4)));
68         }
69         elseif(substr($v,0,3) == "")
70         {
71             $ar[$k] = iconv("UCS-2","utf-8",pack("H4",substr($v,3,-1)));
72         }
73         elseif(substr($v,0,2) == "&#")
74         {
75             echo substr($v,2,-1)."";
76             $ar[$k] = iconv("UCS-2","utf-8",pack("n",substr($v,2,-1)));
77         }
78     }
79     return join("",$ar);
80 }
81  
82  
83 $iplookup=iplookup(); //iplookup(1)参数非空为获取服务器端IP
84  
85 echo "IP:".egetip_joy()."
";
86 echo '返回状态:'.$iplookup['ret']."
";
87 echo 'IP范围Strat:'.$iplookup['start']."
";
88 echo 'IP范围End:'.$iplookup['end']."
";
89 echo '国家:'.unescape($iplookup['country'])."
";
90 echo '省份:'.unescape($iplookup['province'])."
";
91 echo '城市:'.unescape($iplookup['city'])."
";
92 echo '区/县:'.unescape($iplookup['district'])."
";
93 echo '线路:'.unescape($iplookup['isp'])."
";
94 echo '类型:'.$iplookup['type']."
";
95 echo '描写:'.$iplookup['desc']."
";
96 //print_r($iplookup);

推荐阅读
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 如何使用Python高效绘制矩形图形
    本文详细介绍了如何利用Python的Turtle库高效绘制矩形图形,适合初学者快速上手。通过具体示例代码,帮助读者理解Turtle库的基本绘图方法和技巧,同时探讨了在不同应用场景中绘制矩形的实际操作,为后续复杂图形的绘制打下坚实基础。 ... [详细]
  • 本文介绍了如何通过掌握 IScroll 技巧来实现流畅的上拉加载和下拉刷新功能。首先,需要按正确的顺序引入相关文件:1. Zepto;2. iScroll.js;3. scroll-probe.js。此外,还提供了完整的代码示例,可在 GitHub 仓库中查看。通过这些步骤,开发者可以轻松实现高效、流畅的滚动效果,提升用户体验。 ... [详细]
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 本文介绍了使用 Python 编程语言高效抓取微博文本和动态网页图像数据的方法。通过详细的示例代码,展示了如何利用爬虫技术获取微博内容和动态图片,为数据采集和分析提供了实用的技术支持。对于对网络数据抓取感兴趣的读者,本文具有较高的参考价值。 ... [详细]
  • SharePoint 2010多语言用户界面的开发要点与注意事项
    SharePoint 2010 提供了强大的多语言用户界面支持,使得同一网站能够以多种语言展示。例如,对于一个中文版本的 SharePoint 2010 系统,管理员可以通过在服务器上安装英文语言包来实现多语言界面。这一功能不仅提升了用户体验,还扩展了系统的国际化能力。然而,在实施过程中需要注意一些关键点,如确保所有资源文件正确配置、进行充分的测试以及合理管理语言包的更新。这些步骤有助于确保多语言功能的稳定性和可靠性。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • Java中高级工程师面试必备:JVM核心知识点全面解析
    对于软件开发人员而言,随着技术框架的不断演进和成熟,许多高级功能已经被高度封装,使得初级开发者只需掌握基本用法即可迅速完成项目。然而,对于中高级工程师而言,深入了解Java虚拟机(JVM)的核心知识点是必不可少的。这不仅有助于优化性能和解决复杂问题,还能在面试中脱颖而出。本文将全面解析JVM的关键概念和技术细节,帮助读者全面提升技术水平。 ... [详细]
  • 浅析PHP中$_SERVER[
    在PHP后端开发中,`$_SERVER["HTTP_REFERER"]` 是一个非常有用的超级全局变量,它可以获取用户访问当前页面之前的URL。本文将详细介绍该变量的使用方法及其在不同场景下的应用,如页面跳转跟踪、安全验证和用户行为分析等。通过实例解析,帮助开发者更好地理解和利用这一功能。 ... [详细]
  • 如何利用Git实现高效的多人协作开发(远程仓库应用实例)——Ares Zhao
    Git作为一种分布式版本控制系统,每位开发者都是本地仓库的管理者。然而,为了实现团队间的高效协作,需要将本地的开发成果推送至远程共享仓库,以便其他成员能够同步更新。本文将以GitHub为例,详细介绍如何通过设置和使用远程仓库,实现多人协作开发的最佳实践。 ... [详细]
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
author-avatar
感伤花沙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有