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 ...
随机推荐
- how to use javap command
SYNOPSIS javap [options] classes DESCRIPTION The javap command is called "disassembler" be ...
- checkbox与说明文字无法对齐的问题
解决方法: vertical-align:middle; 例:<input type=checkbox id="theId" name=checkbox style=&quo ...
- 桌面oracle 11g导入多年库的dump备忘
接到客户6G的dump文件.先导入桌面orcale ,imp提示出错,执行impdp后如下 连接到: Oracle Database 11g Express Edition Release 11.2. ...
- java-cef系列视频第四集:自定义协议
上一集我们介绍了如何为java-cef添加flashplayer支持. 本视频介绍java-cef中的自定义协议 本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 中国大陆许可协议进行许可.
- Hadoop 2.4.1 Map/Reduce小结【原创】
看了下MapReduce的例子.再看了下Mapper和Reducer源码,理清了参数的意义,就o了. public class Mapper<KEYIN, VALUEIN, KEYOUT, VA ...
- cwRsync window下的跨服务器的文件同步
cwRsync 是window下的文件同步软件,可以跨服务器运行,第一次运行的时候是全部备份同步,之后的同步采用的是增量同步 这个软件分为服务端和客户端. 服务器是需要同步的文件源, 客户端相当于是备 ...
- C++ CompletionPort(完成端口)示例
ECHO客户端 #include <WINSOCK2.H> #include <stdio.h> #define SERVER_ADDRESS "127.0.0.1& ...
- js判定IE
var ie=!-[1,]; 这句话对于多数前端来说都很熟悉,遇到判定是否是ie浏览器就用这个,但是对于由来以及为什么可能没有深入了解过. 短短6个bytes就做了判定.这个表达式是利用IE和标准浏览 ...
- 读书笔记_Effective_C++_条款四十六:需要类型转换时请为模板定义非成员函数
这个条款可以看成是条款24的续集,我们先简单回顾一下条款24,它说了为什么类似于operator *这样的重载运算符要定义成非成员函数(是为了保证混合乘法2*SomeRational或者SomeRat ...
- Activity not started, its current task has been brought to the front
运行错误:Activity not started, its current task has been brought to the front . 原因分析:因为你的模拟器中还有东西在运行,也就是 ...