微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php通过淘宝API查询IP地址归属等信息

淘宝公司提供了一个很好用的IP地理信息查询接口。

在这里:http://ip.taobao.com/

TaobaoIPQuery2这个类将极大的简化相关的信息查询

类 TaobaoIPQuery2 文件

rush:PHP;"> private static function queryIPInfo($ip){
$query = http_build_query(array('ip'=>$ip));
$ch = curl_init();
$options = array(
CURLOPT_URL => sprintf('%s?%s',self::$_requestURL,$query),CURLOPT_RETURNTRANSFER => true,CURLOPT_AUTOREFERER => false,CURLOPT_FOLLOWLOCATION => false,CURLOPT_HEADER => false,CURLOPT_TIMEOUT => 3.0,);
curl_setopt_array($ch,$options);
$content = curl_exec($ch);
curl_close($ch);
return $content;
}

private static function parseJSON($json){
$O = json_decode ($json,true);
if(false === is_null($O)){
return $O;
}
if (version_compare(PHP_VERSION,'5.3.0','>=')) {
$errorCode = json_last_error();
if(isset(self::$_JSONParseError[$errorCode])){
throw new Exception(self::$_JSONParseError[$errorCode],5);
}
}
throw new Exception('JSON parse error',5);
}

private static $_JSONParseError = array(
JSON_ERROR_NONE=>'No error has occurred',JSON_ERROR_DEPTH=>'The maximum stack depth has been exceeded',JSON_ERROR_CTRL_CHAR=>'Control character error,possibly incorrectly encoded',JSON_ERROR_STATE_MISMATCH=>'Invalid or malformed JSON',JSONERRORSyntax=>'Syntax error',JSON_ERROR_UTF8=>'Malformed UTF-8 characters,);
}

TaobaoIPQuery2.Class.PHP

rush:PHP;"> 'No error has occurred',); }

调用

get_region(); $country = $ipquery->get_country(); $city = $ipquery->get_city();

我们再来看个腾讯api接口的

rush:PHP;"> /* *根据腾讯IP分享计划的地址获取IP所在地,比较精确 */ function getIPLoc_QQ($queryIP){ $url = 'http://ip.qq.com/cgi-bin/searchip?searchip1='.$queryIP; $ch = curl_init($url); curl_setopt($ch,CURLOPT_ENCODING,'gb2312'); curl_setopt($ch,CURLOPT_TIMEOUT,10); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true) ; // 获取数据返回 $result = curl_exec($ch); $result = mb_convert_encoding($result,"utf-8","gb2312"); // 编码转换,否则乱码 curl_close($ch); preg_match("@(.*)

@iU",$result,$ipArray); $loc = $ipArray[1]; return $loc; }

腾讯的IP分享计划的查询接口连接是:,该连接后面会带有一个get参数searchip1,即searchip1=你要查询的IP地址。采用PHP向发送http get request,然后获取相应,获得相应结果后,将结果用正则表达式将需要的地理位置信息提取出来就OK了。当然,PHP发送get请求的方法有很多,我用curl来模拟http请求的方法

Curl是PHP一个扩展,进行测试之前,先确认PHP已经加载了curl扩展。打开PHP配置文件PHP.ini,搜索 “extension=php_curl.dll”,将其前面的分号(;)去掉,然后重启HTTP服务器,查看PHPinfo(),若能看到curl的信 息,说明PHP扩展curl成功

接下来是新浪网的API接口

新浪的IP查询接口地址是:PHP">http://int.dpool.sina.com.cn/iplookup/iplookup.PHP,该连接后面也带有get参数,参数ip=你要查询的IP地址,format=返回的查询结果格式。为了方便起见,返回的格式采用json,即format=json,因此,PHP出来扩展curl外,还得扩展json:

$loc = "";
if($location===FALSE) return "";
if (emptyempty($location->desc)) {
$loc = $location->province.$location->city.$location->district.$location->isp;
}else{
$loc = $location->desc;
}
return $loc;
}

使用getIPLoc_sina("183.37.209.57")即可得到IP地址所在的地址位置。

原文地址:https://www.jb51.cc/php/20685.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐