ip地址精确定位地区,根据ip地址定位地理位置

  ip地址精确定位地区,根据ip地址定位地理位置

  当我们在页面上填写个人资料中的省市信息时,页面会根据当前用户所在的城市自动选择省市的下拉选项;当我们访问大型网站时,网站程序会自动进入用户当前所在的城市频道。这些功能是如何实现的?今天我们就通过实例来说明如何根据IP定位用户的城市信息。

  根据当前用户的本地IP地址,查询IP地址数据库,获取IP所在省市的信息。目前,实现这一功能的方法有很多。

  1.调用新浪IP地址库

  新浪提供开放的ip地址数据库数据,供开发者调用。拨打地址:http://int.dpool.sina.com.cn/iplookup/iplookup.php,可以返回当前IP所在省市的信息。

  我们结合本站helloweba文章:基于jQuery JSON的省市联动效果中的省市下拉插件来定位当前用户所在的省市,即默认选择当前用户所在的省市。

  脚本类型= text/JavaScript src= js/jquery . js /script

  script type= text/JavaScript src= js/jquery . city select . js /script

  script type= text/JavaScript src= http://int . d pool . Sina . com . cn/iplookup/iplookup . PHP?

  format=js /script

  我们先加载jquery库和cityselect城市下拉插件,然后调用新浪的IP地址库,以js的形式返回。当然,如果要查询指定ip所在城市的信息,可以使用http://int.dpool.sina.com.cn/iplookup/iplookup.php?格式=JSON ip=123 . 123 . 123 . 123 . 123这样的接口地址,只需将参数IP值改为指定的IP地址即可。

  本地js调用:

  var my province=remote _ IP _ info[ province ];

  var my city=remote _ IP _ info[ city ]

  var my district=remote _ IP _ info[ district ];

  $(function(){

  $(#city_1 )。citySelect({

  prov:myprovince,

  城市:我的城市

  });

  });

  H3调用新浪IP库接口/h3

  p你所在的城市是:scriptdocument.write(我所在的省份我所在的城市);/script /p

  div id=city_1

  选择/选择

  选择/选择

  /div

  2.调用淘宝IP地址库

  淘宝还提供了权威的Ip地址库,调用地址:http://ip.taobao.com/service/getIpInfo.php? IP=123 . 123 . 123 . 123,返回IP对应的省市相关信息。

  调用方法:

  var mycity 2=JSON . data . city;

  $(#city_2 )。html(你的城市是:我的省我的城市2 );

  });

  $ IP=get _ client _ IP();//获取当前用户的ip

  $ URL= http://IP . Taobao . com/service/geti pinfo . PHP?ip=。$ ip

  $ data=file _ get _ contents($ URL);//调用淘宝接口获取信息

  echo $ data

  Get_client_ip()用于获取本地用户的ip地址。

  函数get_client_ip() {

  if(getenv( HTTP _ CLIENT _ IP )strcas ecmp(getenv( HTTP _ CLIENT _ IP ), unknown ))

  $ IP=getenv( HTTP _ CLIENT _ IP );

  else if(getenv( HTTP _ X _ FORWARDED _ FOR )strcas ecmp(getenv( HTTP _ X _ FORWARDED _ FOR ),

  未知))

  $ IP=getenv( HTTP _ X _ FORWARDED _ FOR );

  else if (getenv(远程_ADDR )strcascmp(getenv(远程_ ADDR ),未知))

  $ IP=getenv( REMOTE _ ADDR );

  else if (isset ($_SERVER[远程_ADDR]) $_SERVER[远程_ADDR]

  strcasecmp($_SERVER[远程_ADDR],未知))

  $ IP=$ _ SERVER[ REMOTE _ ADDR ];

  其他

  $ip=“未知”;

  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数据量大,一般有30万到40万条数据,所以需要优化表结构索引。

  如果不存在,则创建表` iptocity `(

  ` IP_Start` double(53,0) NOT NULL默认为 0 ,

  ` IP_End` double(53,0)默认为空,

  ` IP _ province varchar(6)默认为NULL,

  ` IP _ city varchar(10)默认为NULL,

  主键(` IP_Start `),

  键“IP _ end”(“IP _ end ”)

  )ENGINE=MyISAM默认字符集=utf8

  前端ajax向getip.php发送异步请求,getIP.php读取mysql中的IP数据,返回对应IP地址的省市信息。

  include _ once( connect . PHP );//链接数据库

  $ myip=get _ client _ IP();//获取本地IP,上面已经给出了get_client_ip()函数

  $ IP=IP 2 int($ myip);//转换ip

  $sql=select IP_Province,IP_City from iptocity其中IP _ Start= $ IP order by IP _ Start desc

  限制1 ;

  $ query=MySQL _ query($ SQL);//查询库

  $ RS=MySQL _ fetch _ array($ query);

  $arr=array(

  省=$ RS[ IP _省],

  city=$rs[IP_City],

  echo JSON _ encode($ arr);//返回json数据

  //将ip地址转换为整数

  函数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.应用:根据用户所在城市跳转到不同页面。

  通过上面的解释,我们知道了如何获取本地用户的城市信息。现在,我们必须根据用户居住的城市访问不同的页面。让我们以Handan.com为例,用go.php编写以下代码:

  $ city=$ d[ city ];//使用上面的方法获取当地的城市名

  开关(城市){

  案例“深圳”:

  $cityname=深圳;

  打破;

  案例“北京”:

  $cityname=北京;

  打破;

  案例“上海”:

  $ cityname= shanghai

  打破;

  默认值:

  $ cityname= www

  打破;

  $go_url=http://。$cityname。 lashou . com ;

  标题(位置:。$ go _ URL);

  这样就可以根据用户所在的城市跳转到Handan.com对应的频道页面。请演示一下。

  来自helloweba.com,原文链接:http://www.helloweba.com/view-blog-190.html

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: