Home > php教程 > php手册 > body text

关于腾讯ip接口一个流传很广的错误用法

WBOY
Release: 2016-06-06 19:44:44
Original
1304 people have browsed it

摘要: 这是一个流传很广的使用方法,之前我也是深信不疑,最近在折腾自己的小网站PHP10086的时候,发现这个问题, 希望各位引以为戒 正文 腾讯ip接口由于准确度比较高(支持到县一级),使用上也比较广泛。 使用腾讯api接口有两种方法: js版: script langu

摘要:

这是一个流传很广的使用方法,之前我也是深信不疑,最近在折腾自己的小网站PHP10086的时候,发现这个问题,

希望各位引以为戒

正文

腾讯ip接口由于准确度比较高(支持到县一级),使用上也比较广泛。

使用腾讯api接口有两种方法:

js版:

<script language="javascript" type="text/javascript" src="http://fw.qq.com/ipaddress"></script>
<script>document.write("你的IP是:"&#43;IPData[0]&#43;",来自:"&#43;IPData[2]);</script>
Copy after login
对应的引申出服务端版,
Copy after login
PHP版的调用方法:
Copy after login
//方法2 直接获得客户端ip地址
function getIpPlace(){
 $ip=file_get_contents("http://fw.qq.com/ipaddress");
 $ip=str_replace('"',' ',$ip);
 $ip2=explode("(",$ip);
 $a=substr($ip2[1],0,-2);
 $b=explode(",",$a);
 return $b;
}
Copy after login
流传很广的说法都是说这两种方法可以获得客户端IP(当然是指外网ip)
Copy after login
我这个本地测试这两个方法都可以获取到外网IP,解析我的ip信息:浙江杭州西湖区 电信
Copy after login
但是当我把这个两个方法上传到我的个人网站www.php10086.com的时候发现,
Copy after login
<img  src="/inc/test.jsp?url=http%3A%2F%2Fwww.php10086.com%2Fwp-content%2Fuploads%2F2011%2F12%2FQQ20111201131827_thumb.png&refer=http%3A%2F%2Fblog.csdn.net%2Fphp10086%2Farticle%2Fdetails%2F7042014" alt="关于腾讯ip接口一个流传很广的错误用法" > 
Copy after login
解释一下:第一个IP是我个人网站服务器iP
Copy after login
第二个是我使用js版的ip接口获取的值,
Copy after login
对比就发现这两个方法获取的ip不一样,js版的获取的是我外网ip
Copy after login
PHP版获取的是我服务器自身的ip
Copy after login
 
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

原因解释:

<img  src="/inc/test.jsp?url=http%3A%2F%2Fwww.php10086.com%2Fwp-content%2Fuploads%2F2011%2F12%2FMicrosoftOfficeVisio_thumb.jpg&refer=http%3A%2F%2Fblog.csdn.net%2Fphp10086%2Farticle%2Fdetails%2F7042014" alt="关于腾讯ip接口一个流传很广的错误用法" > 
Copy after login

js版流程(js依赖于浏览器解析)

用户---浏览器---本地host--外网ip--DNS解析--腾讯ip接口服务器
Copy after login
返回:外网ip(完全正确)
Copy after login
 
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login

PHP版流程:

用户---浏览器---本地host--外网ip--Dns解析-PHP10086服务器 ---腾讯ip接口服务器
Copy after login
返回:PHP10086服务器的IP
Copy after login
 
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
而本地测试都可以返回的原因是:
Copy after login
本地作为服务器,最近访问腾讯ip接口服务器的ip还是外网IP,所以两个方法都可以返回外网IP
Copy after login
 
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
结论:PHP版腾讯ip接口获取的IP是最近访问腾讯ip接口服务器的IP
Copy after login
为了证明这个,我又测试新浪的ip接口,测试结果和腾讯ip接口一样,证明结论完全正确.
Copy after login
附带一个DEMO:
Copy after login

demo地址:demo演示

服务器比较差,各位温柔点

 
Copy after login
Copy after login
Copy after login
Copy after login
Copy after login
从这个接口对我得出的结论:
Copy after login
  1. 本地测试环境和真实生产环境还是有区别的
    Copy after login
  2. 即使网上流传很广的方法也未必可靠,正如邓爷爷说的实践出真知,作为程序员要又打破权威,质疑权威的胆识和行动
    Copy after login
<p>腾讯IP接口,js ip接口,PHP ip</p>
Copy after login
<span><img  src="/inc/test.jsp?url=http%3A%2F%2Fi.creativecommons.org%2Fl%2Fby-nc-nd%2F3.0%2F88x31.png&refer=http%3A%2F%2Fblog.csdn.net%2Fphp10086%2Farticle%2Fdetails%2F7042014" alt="关于腾讯ip接口一个流传很广的错误用法" ><span>本文基于署名-非商业性使用 3.0PHP10086博客网(PHP淮北):http://www.php10086.com,也可以邮件与我联系。据说每个程序员都应该挖一口自己的井,希望各位支持我的"井":PHP10086博客网(PHP淮北):http://www.php10086.com。</span></span>
Copy after login
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!