根据ip地址获取地理位置_免费从IP地址获取地理信息

根据ip地址获取地理位置

假设您需要知道访问您网站的人来自哪个国家/地区,因为您拥有一个国际化的网站,并根据该国家/地区显示不同的内容。 您可以询问用户。 无论如何,您可能都想拥有该功能以确保访问者可以控制,但可以肯定的是,他们会尽其所能地欣赏它的正确性。

没有本机Web技术具有此信息。 JavaScript具有地理位置,但是用户必须批准该地理位置,即使那样,您也必须使用一些库将坐标转换为更可用的国家/地区。 即使后端语言以JavaScript不能访问IP地址的方式,也不会自动知道来源国。

加拿大。 我只要WANNA知道他们是否来自加拿大。

您必须要求某种知道这一点的服务。 IP Geolocation API是该服务,并且是免费的。

您针对API执行GET。 如果要测试它,可以在浏览器中完成它:

https://api.ipgeolocationapi.com/geolocate/184.149.48.32

但是,您不仅会得到这个国家。 您会获得一堆可能需要使用的信息。 我恰好坐在加拿大,这就是我获得IP的目的

{ 
   "continent":"North America",
   "address_format":"{{recipient}}\n{{street}}\n{{city}} {{region_short}} {{postalcode}}\n{{country}}",
   "alpha2":"CA",
   "alpha3":"CAN",
   "country_code":"1",
   "international_prefix":"011",
   "ioc":"CAN",
   "gec":"CA",
   "name":"Canada",
   "national_destination_code_lengths":[ 
      3
   ],
   "national_number_lengths":[ 
      10
   ],
   "national_prefix":"1",
   "number":"124",
   "region":"Americas",
   "subregion":"Northern America",
   "world_region":"AMER",
   "un_locode":"CA",
   "nationality":"Canadian",
   "postal_code":true,
   "unofficial_names":[ 
      "Canada",
      "Kanada",
      "Canadá",
      "カナダ"
   ],
   "languages_official":[ 
      "en",
      "fr"
   ],
   "languages_spoken":[ 
      "en",
      "fr"
   ],
   "geo":{ 
      "latitude":56.130366,
      "latitude_dec":"62.832908630371094",
      "longitude":-106.346771,
      "longitude_dec":"-95.91332244873047",
      "max_latitude":83.6381,
      "max_longitude":-50.9766,
      "min_latitude":41.6765559,
      "min_longitude":-141.00187,
      "bounds":{ 
         "northeast":{ 
            "lat":83.6381,
            "lng":-50.9766
         },
         "southwest":{ 
            "lat":41.6765559,
            "lng":-141.00187
         }
      }
   },
   "currency_code":"CAD",
   "start_of_week":"sunday"
}

有了这些信息,我可以轻松地决定将其重定向到我的网站的加拿大版本,或者以CAD显示价格,或者提供法文翻译,或者我能想到的任何其他内容。

假设您使用过PHP 。 您可以像这样获得IP ...

function getUserIpAddr() {
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  } else {
    $ip = $_SERVER['REMOTE_ADDR'];
  }
  return $ip;
}

用于获取信息的cURL:

$url = "https://api.ipgeolocationapi.com/geolocate/184.149.48.32"; 
$ch = curl_init();  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_URL, $url); 
$result = curl_exec($ch);

它以JSON形式返回,因此:

$json = json_decode($result);

然后$json->{'name'}; 如果我在加拿大,将会是“加拿大”。

所以我可以这样:

if ($json->{'name'} == "Canada") {
  // serve index-ca.php
} else {
  // server index.php
}

翻译自: https://css-tricks.com/get-geographic-information-from-an-ip-address-for-free/

根据ip地址获取地理位置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值