po98 发表于 2014-1-10 10:03:20

php查询IP地址归属等信息

淘宝公司提供了一个很好用的IP地理信息查询接口。
在这里:http://ip.taobao.com/
TaobaoIPQuery2这个类将极大的简化相关的信息查询。

类 TaobaoIPQuery2 文件:
<?php/* Usage: * $IPInfo = TaobaoIPQuery2::getIPInfo('IPAddress');
http://www.iyunv.com/roucheng/ */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);    }    /* http://www.iyunv.com/roucheng/ */    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',    );}调用:$ip = $_SERVER["REMOTE_ADDR"];$ipquery = new taobaoIPQuery($ip);$region = $ipquery->get_region();$country = $ipquery->get_country();$city = $ipquery->get_city();另外新浪也提供接口:http://ipapi.sinaapp.com/


gznz12345 发表于 2014-1-10 15:04:24

额对你忍无可忍,请伱自重

骞没蕴 发表于 2014-1-10 18:00:45

我不想理的人,便不理,我想理的人,却不理我。

wztsdsp 发表于 2014-1-10 19:02:49

要怎么证明,你的亲吻真的残忍.
页: [1]
查看完整版本: php查询IP地址归属等信息