首页 > 开发 > PHP > 正文

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

2024-05-04 22:33:23
字体:
来源:转载
供稿:网友

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

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

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

类 TaobaoIPQuery2 文件:

<?php/* Usage: * $IPInfo = TaobaoIPQuery2::getIPInfo('IPAddress'); */Class TaobaoIPQuery2{  private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php';  public static function getIPInfo($ip){    $long = ip2long($ip);    if($long === 0){      throw new Exception('IP address error', 5);    }    $ip=long2ip($long);    $IPInfo = self::queryIPInfo($ip);    return self::parseJSON($IPInfo);  }    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',      JSON_ERROR_SYNTAX=>'Syntax error',      JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded',  );}

TaobaoIPQuery2.Class.php:

<?phpClass TaobaoIPQuery2{  private static $_requestURL = 'http://ip.taobao.com/service/getIpInfo.php';  public static function getIPInfo($ip){    $long = ip2long($ip);    if($long === 0){      throw new Exception('IP address error', 5);    }    $ip=long2ip($long);    $IPInfo = self::queryIPInfo($ip);    return self::parseJSON($IPInfo);  }    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',      JSON_ERROR_SYNTAX=>'Syntax error',      JSON_ERROR_UTF8=>'Malformed UTF-8 characters, possibly incorrectly encoded',  );}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表