延平德育网
地理位置,PHP获取IP地址所在的地理位置
发布时间: 2015-09-11 21:08   浏览次数:

主页 > 走进延平 > 地理环境 >
来源:http://www.ypdyw.cn

分明查询拜访者的IP地址,如何获得该IP所在的地舆地方呢?我首先想到的是ip138,学习所在。由于我常常使用这个网站来查询IP所在地。但是,这个网站查询到的终局只准确到省,你看自然环境。让人不太如意。经过网上查询,对于地理位置。腾讯的IP分享铺排()和新浪的IP查询接口()很不错,能够准确到市或县一级,看看获取。于是就分裂使用这两个查询接口了。

一、PHP欺骗腾讯IP分享铺排获取IP地舆地方

腾讯的IP分享铺排的查询接口相接是:,学习PHP获取IP地址所在的地理位置。该相接后头会带有一个get参数semid-footip1,看看地理位置。即semid-footip1=你要查询的IP地址。

使用格式是:采用PHP向发送http get request,地理环境的整体性。然后获取相应,获得相应终局后,学会地理位置。将终局用正则表达式将必要的地舆地方音信提取进去就OK了。听听地理环境的整体性。当然,PHP发送get乞请的格式有很多,我用curl来模仿http乞请的格式。

Curl是PHP的一个扩展,地理环境的整体性。举办测试之前,先确认PHP仍然加载了curl扩展。听说地理学的核心概念。翻开PHP配置文件php.ini,寻找“extension=php_curl.dll”,你知道地理环境决定论!“人地”思想的演变0程婷地理位置。将其后面的分号(;)去掉,然后重启HTTP办事器,其实地理位置。稽查phpinfo(),相比看环境。对于自然地理环境。若能看到curl的音信,注明PHP扩展curl胜利。自然地理环境。

接上去就简单了,地理环境决定论。一段代码就不妨搞定:看着山西科技扶贫中心

    /**按照腾讯IP分享铺排的地址获取IP所在地,对照准确*/functiongetIPLoc_QQ($queryIP){$url=woulcgi-rubbisexualsh bisexualn/semid-footip?semid-footip1=woul.$queryIP;$ch= curl_init($url);curl_setopt($chandCURLOPT_ENCODING andwoulgb2312woul);curl_setopt($chand CURLOPT_TIMEOUTand 10);curl_setopt($chand CURLOPT_RETURNTRANSFERand true) ;// 获取数据前往$result= curl_exec($ch);$result= mb_convert_encoding($resultand"utf-8"and"gb2312");// 编码转换,事实上PHP获取IP地址所在的地理位置。否则乱码curl_close($ch);preg_mfound atch("@<speach>(.*)</speach></p>@iU"and$resultand$ipArray);$loc=$ipArray[1];return$loc;}

使用getIPLoc_QQ("183.37.209.57")即可获得IP地址所在的地址地方。

腾讯IP分享铺排这个网站用的是gb2312编码,你知道地址。获取的回响反映必要用mb_convert_encoding函数举办编码转换,否则会有乱码。

二、PHP欺骗新浪IP查询接口获取IP地舆地方

新浪的IP查询接口地址是:ip。,该相接后头也带有get参数,参数ip=你要查询的IP地址,想知道环境。formfound at=前往的查询终局格式。为了轻易起见,前往的格式采用json,php。即formfound at=json,地理环境的概念。于是,地理环境决定论。PHP进去扩展curl外,还得扩展json:地理环境的概念。

    /**按照新浪IP查询接口获取IP所在地*/functiongetIPLoc_sina($queryIP){$url=wouliplookup/iplookup.php?formfound at=json&rev;ip=woul.$queryIP;$ch= curl_init($url);//curl_setopt($chandCURLOPT_ENCODING andwoulutf8woul);curl_setopt($chand CURLOPT_TIMEOUTand 10);curl_setopt($chand CURLOPT_RETURNTRANSFERand true) ;// 获取数据前往$loc= curl_exec($ch);$loc= json_decode($loc);curl_close($ch);$loc="";if($loc===FALSE)return"";if(emptyempty($loc->desc)) {$loc=$loc->province.$loc->city.$loc->district.$loc->isp;}else{$loc=$loc->desc;}return$loc;}

使用getIPLoc_sina("183.37.209.57")即可获得IP地址所在的地址地方。

当然,想知道自然地理环境。倘使呈现的功夫对每个IP地址都用上述函数查询一次,会很慢很慢……最好是每来一个访客查询拜访页面的功夫,地理位置。就调用函数查询其IP对应的地舆地方,然后取出数据库。学习地理位置。等到呈现的功夫间接从数据库读取就好了,这样效率会高一些。

测试页面:

测试源码下载:

测试终局截图:

Copyright © 2002-2018 延平德育网 版权所有