- 浏览: 1826639 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wangyudong:
Wisdom RESTClient工具地址更新了哦https: ...
前端模拟POST发送数据-Chrome下的REST Client(接口测试利器) -
wangyudong:
很多REST Client是不支持自动化测试RESTful A ...
前端模拟POST发送数据-Chrome下的REST Client(接口测试利器) -
higkoo:
一个非常棒的系统,要是能支持LDAP等开源认证就完美了。
Cynthia 是个问题管理/BUG管理/任务管理/项目管理系统。 -
寻光之旅:
标签库使用有啥好处呢?
thinkphp 使用标签库的步骤 -
lgdjy123:
Android:TextView属性大全
当我们在页面中填写个人资料中的省市信息时,页面会根据当前用户所在的城市自动选中省市下拉选项;当我们访问某个大型站点时,网站程序会自动进入到用户当前所在的城市频道。这些功能是如何实现的呢?今天我们来通过实例讲解如何根据IP定位用户所在城市信息。
根据当前用户本地IP地址,查询IP地址库,获取IP所在的省市信息,目前有多种方式实现该功能。
1.调用新浪IP地址库
新浪提供了开放的IP地址库数据供开发者调用,调用地址:http://int.dpool.sina.com.cn/iplookup/iplookup.php,即可返回当前ip所在的省市信息。
我们结合本站helloweba文章:基于jQuery+JSON的省市联动效果中的省市下拉插件,来定位当前用户所在的省市,即默认状态选中的是当前用户所在的省市。
<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地址即可。
本地js调用:
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);
}
3.调用纯真IP库
纯真IP库基本上每周都有更新,您可以到各大下载网站上下载最新版本的纯真IP库。推荐天空下载地址:http://www.skycn.com/soft/14344.html
使用PHP调用纯真ip库的方法,本文不详述,请戳这里:http://blog.csdn.net/aaron_luchen/article/details/6637799
4.调用本地数据库
如果您的系统足够强大,为了安全稳重我们建议您使用本地IP地址库,目前网上有IP地址库下载,我们使用mysql版的ip库,然后通过PHP读取。
由于IP数据量大,一般有三四十万条数据,我们要进行表结构索引优化。
CREATE TABLE IF NOT EXISTS `iptocity` (
`IP_Start` double(53,0) NOT NULL DEFAULT '0',
`IP_End` double(53,0) DEFAULT NULL,
`IP_Province` varchar(6) DEFAULT NULL,
`IP_City` varchar(10) DEFAULT NULL,
PRIMARY KEY (`IP_Start`),
KEY `IP_End` (`IP_End`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
调用方法:
$(function(){
$.getJSON("getIP.php",function(json){
var myprovince3 = json.province;
var mycity3 = json.city;
$("#city_3").citySelect({
prov:myprovince3,
city:mycity3
});
});
});
前端通过ajax向getIP.php发送异步请求,getIP.php读取mysql中的IP数据,返回对应ip地址的省市信息。
include_once("connect.php");//链接数据库
$myip = get_client_ip(); //获取本地IP,get_client_ip()函数在上文中已给出
$ip=ip2int($myip); //转换ip
$sql="select IP_Province,IP_City from iptocity where IP_Start<='$ip' order by IP_Start desc
limit 1";
$query = mysql_query($sql); //查询库
$rs = mysql_fetch_array($query);
$arr = array(
'province'=>$rs['IP_Province'],
'city'=>$rs['IP_City'],
);
echo json_encode($arr); //返回json数据
//将ip地址转换成整型
function ip2int($ip){
list($ip1,$ip2,$ip3,$ip4)=explode(".",$ip);
return $ip1*pow(256,3)+$ip2*pow(256,2)+$ip3*256+$ip4;
}
注意我们使用自定义函数ip2int()将IP地址转换成整型,而不是用PHP自带函数ip2long(),因为ip2long()有时会将ip转换成负数,所以为了保险使用自定义函数ip2int()。
5.应用:根据用户所在城市跳转到不同的页面
通过上面的讲解我们知道如何获取本地用户的城市信息,现在我们要根据用户所在的城市访问不同页面。我们以拉手网为例,在go.php中写入如下代码:
$city = $d['city']; //利用上述方法获得本地城市名称
switch($city){
case '深圳':
$cityname = 'shenzhen';
break;
case '北京':
$cityname = 'beijing';
break;
case '上海':
$cityname = 'shanghai';
break;
default:
$cityname = 'www';
break;
}
$go_url = "http://".$cityname.".lashou.com";
header("Location:".$go_url);
这样,就可以根据用户所在的城市跳转到拉手网对应的频道页面了。
发表评论
-
Lumen写事件
2018-02-10 10:46 6621.在事件里面定义事件 <?php /** * ... -
PHP设计模式之状态机模式-实现业务流控制
2018-01-28 11:16 1668应用场景:在我们日常开发中经常会遇到各种状态的切换,例如电 ... -
装wampserver时显示计算机丢失MSVCR110.dll
2017-03-07 10:15 1077http://www.microsoft.com/zh-CN ... -
phpdocument的使用
2016-10-25 16:24 484官网: https://www.phpdoc.org/ ... -
微信调试方法
2016-05-24 09:25 7081. 在本地搭建类似LAMP的环境(或者WAMP)都行,目的 ... -
创建自己的composer包
2015-12-10 17:01 910创建一个composer/packagist包 在g ... -
微信nickname乱码及mysql编码格式设置(utf8mb4)
2015-12-08 12:24 1628将数据库的编码设置为utf8mb4_general_ci ... -
docker php 配置
2015-10-28 18:10 1035FROM php:5.6-fpm MAINTAINER S ... -
四种数据存储结构---顺序存储 链接存储 索引存储 散列存储
2015-08-15 21:54 1447存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储。 ... -
分享PHP代码检查经验
2015-08-09 23:03 1513问: 团队十多人开发, 如何保证代码规范统一? http ... -
php过滤只匹配中英文字符串
2015-08-04 15:26 1814<?php $str = "php $ ... -
移除emoji内容
2015-08-04 14:52 1164public static function removeE ... -
php 敏感词过滤高级版
2015-08-04 10:20 1411前面介绍过一个过滤了 ... -
php过滤广告内容(兼职,QQ号,淘宝兼职,网址)
2015-08-04 10:17 1180如果你网站有评论那么你肯定会发现你网站经常会被一人注入广告了 ... -
写第一个PHP扩展, 实现计算数组的个数
2015-07-20 19:09 1262需求: 写第一个PHP扩展, 里面包含一个函数叫 maxw ... -
PHP常用设计模式单例, 工厂, 观察者, 责任链, 装饰, 策略,适配,桥接模式
2015-07-15 11:08 1537// 多态, 在JAVA中是这样用的, 其实在PHP当中可 ... -
php命令行界面
2015-07-16 17:03 887常用选项 php -v php -i ... -
使用phpdocument
2015-07-14 17:05 800pear install phpdoc phpDocumen ... -
将session存储到数据库中
2015-07-14 15:33 728CREATE TABLE sessions ( id ... -
正则表达式向前查找向后查找,环绕或零宽断言
2015-07-14 12:40 2258向前查找和向后查找 1. 向前查找:根据要匹配的字符序列后 ...
相关推荐
本文将给大家用两种方法演示根据IP定位用户所在城市信息。
ip定位城市,根据用户登录的ip获取用户所在城市
脚本绑定到场景对象上,结合天气数据库 WeatherAdCode.txt(放到Resources文件下)
Thinkphp5根据IP地址获取定位地理位置,精准到城市 离线IP库进行查询,查询速度快,而且也比较准确。
PHP jQuery根据IP地址定位城市用两种方法演示根据IP地址定位用户所在城市信息。 PHP jQuery根据IP地址定位城市截图 相关阅读 同类推荐:站长常用源码
根据ip地址自动显示所在城市,自带数据库,简单易懂。
PHP jQuery根据IP地址定位城市用两种方法演示根据IP地址定位用户所在城市信息。
通过输入的ip地址,读取纯真ip数据库,获取该IP地址所在地区
在我们使用thinkphp类库IpLocation方法getLocation时,发现获取到信息为空,原因是在我们的框架中没有加载地址库UTFWry.dat,可以在构造方法中看到__construct($filename = "UTFWry.dat"),再次我们只需要下载文件,...
通过IP定位你所在的城市及网络服务商,该资源还有一个IP库为qqwry,这个东东网上到处都能下载。
最新的IP数据库,本地维护,精确到城市,可以通过ip定位IP所在的位置信息,使用GeoLite2进行精准定位。
QT使用http get的方式得到指定的IP地址地理位置信息http://ip.taobao.com/service/getIpInfo.php?ip=[需要查询的IP],如输入IP192.168.1.1,得到地理位置为中国广东电信
Unity 工具之 获取当前所在城市的天气数据的封装(自动定位当前所在城市...1、首先根据联网 IP 获得当前所在城市 2、然后根据城市名称得到天气所需要的城市ID; 3、根据城市ID,最后得到天气数据,解析封装给接口调用;
今天,就讨论一下在PHP中如何获取用户IP地址、PHP根据IP判断用户所在城市以及PHP根据IP实现城市切换或跳转的问题。
原生的vue源代码,使用vue获取当前IP,并且获取到当前所在地天气.docx,亲测有效,有问题可一直私聊我
* 最后还是决定使用第三方的定位功能,使用手机ip定位,获取ip的位置接口混乱(要是网站失效了怎么办?) 还是跟着大公司走好了 * 经过查看, * 百度Android定位SDK自v7.0版本起,按照附加功能不同,向开发者提供...
程序作用:当我们用asp制作留言簿,论坛,或者网友参加评论的时候,我们都希望记录网友ip的同时,也想直接知道他来自哪里,我们现在通过数据库进行查询,将ip所在的地理位置获取,并可保存在数据库中。非常实用的一...
ASP通过对IP查找地区库,查询定位所在城市地区
(1)IP智能切换城市,用户智能跳转到用户所在城市内容模块。 (2)根据ip区域化为不同区域提供内容个性化,实现差异化策略。 (3)区域化精准的广告投放,根据客户群定制广告,依赖于IP地址库的准确性。 (4)高效...
使用javascript调用新浪接口获取客户端所在区域,可精确到城市名称。