获取IP地址的几种方法
根据ip获取地址的几种方法
1.调用新浪IP地址库
<script type="text/javascript" src="js/jquery.js">
</script> <script type="text/javascript" src="js/jquery.cityselect.js">
</script> <script type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php? format=js"></script>
我们先载入jquery库和cityselect城市下拉插件,然后调用新浪的IP地址库,并以js的形式返回,当然如果你想查询某一指定IP所在的城市信息可以使用接口地址
如:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=123.123.123.123,将参数ip值换成指定的IP地址即可。
本地使用:
var myprovince = remote_ip_info['province'];
var mycity = remote_ip_info['city']
var mydistrict = remote_ip_info['district'];
$(function(){
$("#city_1").citySelect({ prov:myprovince, city:mycity });
});
HTML代码:
<h3>调用新浪IP库接口</h3>
<p>您所在的城市是:<script>document.write(myprovince+' '+mycity);</script></p>
<div id="city_1"> <select class="prov"></select> <select class="city"></select>
</div>
2、使用淘宝的ip地址库
淘宝也提供了比较权威的IP地址库,
调用地址:http://ip.taobao.com/service/getIpInfo.php?ip=123.123.123.123,返回对应IP的省市相关信息。
$(function(){
$.getJSON("getTaoIP.php",function(json){
var myprovince2 = json.data.region;
var mycity2 = json.data.city;
$("#city_2").html("您所在的城市是:"+myprovince2+mycity2);
});
});
getTaoIP.php用来获取淘宝的对应IP的省市信息,返回的是json格式的数据。
$ip = get_client_ip(); //获取当前用户的ip $url = "http://ip.taobao.com/service/getIpInfo.php?ip=".$ip; $data = file_get_contents($url); //调用淘宝接口获取信息 echo $data;
get_client_ip()用来获取本地用户的IP地址。
//获取用户真实IP function get_client_ip() { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return ($ip); }
案例代码分享
数据表结构
DROP TABLE IF EXISTS `think_ipdb`;
CREATE TABLE `think_ipdb` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(30) DEFAULT NULL,
`country` varchar(50) DEFAULT NULL,
`province` varchar(30) DEFAULT NULL,
`city` varchar(30) DEFAULT NULL,
`district` varchar(30) DEFAULT NULL,
`isp` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ip` (`ip`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=24780 DEFAULT CHARSET=utf8 COMMENT='本地 IP地址库';
调用示例
$think_ipdb = M('think_ipdb',null,C('UC_DB_DSN')); // 实例化User对象 $city = $this->_getLocalDbIp($think_ipdb,$value['ip']);
类方法
/** * 获取本地ip库信息 * @param type $db * @param type $ip */
private function _getLocalDbIp($db,$ip) { if(empty($ip)){ return null; } $tmp = $db->where(array('ip'=>$ip))->find(); if(empty($tmp)){ $address = getAddressFromIp($ip); if(!empty($address)){ $address['ip'] = $ip; $db->add($address); return $address['city']; }else{ return null; } }else{ $city = $tmp['city']; } }
通用函数
//根据ip地址获取地址信息
function getAddressFromIp($ip){ $urlTaobao = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip; $urlSina = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip; $json = file_get_contents($urlTaobao); $jsonDecode = json_decode($json); if($jsonDecode->code==0){//如果取不到就去取新浪的 $data['country'] = $jsonDecode->data->country; $data['province'] = $jsonDecode->data->region; $data['city'] = $jsonDecode->data->city; $data['isp'] = $jsonDecode->data->isp; return $data; }else{ $json = file_get_contents($urlSina); $jsonDecode = json_decode($json); $data['country'] = $jsonDecode->country; $data['province'] = $jsonDecode->province; $data['city'] = $jsonDecode->city; $data['isp'] = $jsonDecode->isp; $data['district'] = $jsonDecode->district; return $data; } } //根据ip地质获取城市名 function getCityFromIp($ip){ $data = getAddressFromIp($ip); return $data['city']; }
获取IP地址的几种方法的更多相关文章
- windows下获取IP地址的两种方法
windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...
- php 获取ip地址的5种方法,插入用户登录日志实例
php 获取ip地址的5种方法,插入用户登录日志实例,推荐使用第二种方法 <?php //方法1: $ip = $_SERVER["REMOTE_ADDR"]; echo $ ...
- Java获取ip地址的几种方法
以下内容介绍下java获取ip地址的几种思路. 1.直接利用java.net.InetAddress类获取,不过这种方法只在windows环境下有效,在linux环境下只能获取localhost地址( ...
- php获取客户端IP地址的几种方法(转)
[php] view plain copy php获取客户端IP地址的几种方法 方法一 <?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $ ...
- C#获取MAC地址的几种方法
首先需要用到的一些方法和类: public enum NCBCONST { NCBNAMSZ = 16, MAX_LANA = 254, NCBENUM = 0x37, NRC_GOODRET = 0 ...
- CentOS 7配置静态IP地址的两种方法 来自:互联网
CentOS 7配置静态IP地址的两种方法 来自:互联网 时间:2021-01-12 阅读:4 如果你想要为CentOS 7中的某个网络接口设置静态IP地址,有几种不同的方法,这取决于你是否想要使用网 ...
- 树莓派4B获取IP地址的几种简易方法
首先声明一下,使用的是Paspbian系统,其实其他系统和本文说的获取IP地址关系也不大. 1.当你有路由器,有PC客户端的情况,你把你的树莓派用网线将其连接起来.你可以借助这个软件,advanced ...
- 【转载】VC获取MAC地址的4种方法
From:http://blog.csdn.net/pdfmaker/article/details/465748 有需求才有创造,有了问题才会想着去解决,那么我这里的获取MAC地址的第4种方法也是在 ...
- 虚拟机下CentOS 配置IP地址的三种方法
1.自动获取IP地址(我不是用的这种方法,不做过多介绍) 虚拟机使用桥接模式,相当于连接到物理机的网络里,物理机网络有DHCP服务器自动分配IP地址. #dhclient 自动获取ip地址命令 #if ...
随机推荐
- 【leetcode】1221. Split a String in Balanced Strings
题目如下: Balanced strings are those who have equal quantity of 'L' and 'R' characters. Given a balanced ...
- shiro框架学习-4- Shiro内置JdbcRealm
1. JdbcRealm 数据库准备 JdbcRealm就是用户的角色,权限都从数据库中读取,也就是用来进行用户认证授权的安全数据源更换为从数据库中读取,其他没有差别,首先在数据库创建三张表: CR ...
- linux system函数引发的错误
转: https://my.oschina.net/renhc/blog/54582 先看一下问题 简单封装了一下system()函数: int pox_system(const char *cm ...
- 中南林业大学校赛 I 背包问题 ( 折半枚举 || 01背包递归写法 )
题目链接 题意 : 中文题 分析 : 价值和重量都太过于大,所以采用折半枚举的方法,详细可以看挑战的超大背包问题 由于 n <= 30 那么可以不必直接记录状态来优化,面对每个用例 直接采用递 ...
- 为什么C++中只有指针和引用才能实现多态?
代码: class A { public: virtual void Debug(){} }; class B:public A { public: virtual void Debug(){} }; ...
- CDOJ 1073 线段树 单点更新+区间查询 水题
H - 秋实大哥与线段树 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit S ...
- Nginx的正则表达式
Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Ра ...
- Spring Boot教程(十九)RESTful API单元测试
下面针对该Controller编写测试用例验证正确性,具体如下.当然也可以通过浏览器插件等进行请求提交验证. @RunWith(SpringJUnit4ClassRunner.class) @Spri ...
- hbuilderx 连接模拟器
打开cmd,找到bin的安装目录(G:\Program Files\Nox\bin) cd进入夜神模拟器bin目录 执行以下命令 nox_adb connect 127.0.0.1:620 ...
- Yahoo 军规(部分)
1.尽量减少HTTP的请求次数 网站中的图片,文字,样式表等内容都是从服务器端请求过来的.如果项目中有多个脚本,多个样式表需要加载,尽量将他们合并在一个CSS.JS文件中. 2.将CSS放在页面最上 ...