php查询IP地址归属等信息
淘宝公司提供了一个很好用的IP地理信息查询接口。
在这里:http://ip.taobao.com/
TaobaoIPQuery2这个类将极大的简化相关的信息查询。
类 TaobaoIPQuery2 文件:
<?php
/* Usage:
* $IPInfo = TaobaoIPQuery2::getIPInfo('IPAddress'); http://www.cnblogs.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:
<?php
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);
}
/* http://www.cnblogs.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/
php查询IP地址归属等信息的更多相关文章
- 查询ip地址归属地
查询ip地址归属地方法: curl ip.cn/$ip 如果没有返回,试试地址写全: curl https://www.ip.cn/$ip 如:
- 手机归属地查询-IP地址查询-身份证查询-域名备案查询--Api接口
使用这些接口是需要密钥的 公共密钥 appkey: 10003 secret: d1149a30182aa2088ef645309ea193bf 生成后sign: b59bc3ef6191eb9f ...
- Python实现IP地址归属地查询
一.使用淘宝IP地址库查询 使用淘宝的Rest API,可以快速查询IP地址的归属地: 图00-淘宝IP地址库RestAPI使用说明 图01-使用淘宝免费IP地址库-查询IP归属地 存在问题:淘宝的免 ...
- 【VB.NET】利用纯真IP数据库查询IP地址及信息
几年前从某个博客抄来的,已经忘记原地址了,如果需要C#版的,可以在博客园搜到吧.我因为自己用,所以转换为了VBNET代码,而且也放置了很久,今天无意间翻出来,就分享给大家吧. 首先,先下载 纯真数据库 ...
- 获取客户端IP地址定位城市信息
获取客户端IP地址定位城市信息 1.首先获取客户端的IP地址 function getIPaddress(){ $IPaddress=''; if (isset($_SERVER)){ if (iss ...
- 获取ip地址及城市信息
大家好,今天给大家分享的是一个简单的知识获取登录用户的ip地址及城市信息,lz是一个小白,如果有哪些错误的地方 欢迎大家指出 东西很简单,直接上代码 [HttpPost] public string ...
- 【VB.NET】通过 IPIP.NET 数据库来查询IP地址
上一次介绍了利用纯真数据库查询IP地址详细信息的方法.然而纯真数据库是由网友反馈所提供的,很多数据描述并不准确,所以我上网找了一些其他的IP数据库,最后就找到了 ipip.net 这个网站所提供的IP ...
- Mac通过域名查询IP地址
Mac通过域名查询IP地址 方法一:使用Mac自带的"网络实用工具" 步骤: 搜索"网络使用工具",并打开: 点击LookUp,输入互联网地址,点击Lookup ...
- 在windows系统和linux系统中查询IP地址命令的不同
在linux和windows系统上查询IP地址的命令是不一样的. 在linux中的命令行模式下,输入ifconfig即可查询到IP.而在windows系统下要查询IP地址需要先打开do ...
随机推荐
- jquery.pjax.js bug问题解决集锦
jquery.pjax 是一个很好的局部刷新插件,但实际应用过程是还是会有很多小问题,部分问题解决如下: 1.pjax 局部加载时候,IE 存在缓存问题,很容易理解,pjax是通过jquery的aja ...
- iOS-Xcode上传后iTunes Connect构建版本不显示
在升级到Xcode8版本以后大多数人会碰到这个问题-开开心心开发好一款app以后上传到iTunes后台提交审核,然而iTunes Connect后台活动栏里没有出现我们上传的app,确切的说是显示一会 ...
- Request is not available in this context
部署到新服务器的IIS的时候发现这个错误: Request is not available in this context 解决方案: <system.web> <customEr ...
- Activity跳转时生命周期跟踪
1. 步骤1(打开First Activity):经过onCreate.onStart.onResume后First Activity就展现啦: 2. 步骤2(跳转至Second Activity): ...
- 代码生成的地址:mygeneration
一个代码生成的地址: https://gitshell.com/shiningrise/mygeneration/
- 日本超人气洛比(Robi)声控机器人
1.日本超人气洛比(Robi)声控机器人. http://technews.cn/2015/04/18/interview-with-robi-creator-tomotaka-takahashi/ ...
- PyCharm4注册码--软件安装
软件连接:http://www.jetbrains.com/pycharm/ PyCharm4注册码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...
- C#连接mysql数据库插入数据后获取自增长主键ID值
From: http://blog.csdn.net/zbc496218/article/details/51082983 MySqlConnection conn = new MySqlConnec ...
- 未知高度定宽div水平居中及垂直居中(兼容ie6及其他牛逼浏览器)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- c# socket 框架学习 SocketAsyncEventArgsPool 封装
public class SocketAsyncEventArgsPool{ //已使用记录 private List<Int32> usedRecord; //未使用记录 private ...