【问题标题】:Location based home page in php web page [closed]php网页中基于位置的主页[关闭]
【发布时间】:2015-09-26 18:11:58
【问题描述】:

与专为欧洲(尤其是英国)设计的主页相比,我需要在美国显示不同的主页。这可以在PHP中实现吗?

我开发的 PHP 网站大量使用了 JS、Ajax 和 Bootstrap。

【问题讨论】:

  • 是的,确实如此,寻找任何开源 ip 数据库,这些数据库相当可靠,但不是 100% 准确
  • 您需要一个地理位置数据库。
  • 看看 MaxMind,它提供了一个免费产品,可以从您的 IP 中计算出您所在的国家/地区。始终为使用代理和 VPN 的用户提供覆盖。根据您得到的答案,您可以重定向到不同的页面。

标签: javascript php twitter-bootstrap geo


【解决方案1】:
$ip = $_SERVER['REMOTE_ADDR'];
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
echo $details->city;

例如对于 ip 8.8.8.8 它给出了

{
  "ip": "8.8.8.8",
  "hostname": "google-public-dns-a.google.com",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
  "loc": "37.3860,-122.0838",
  "org": "AS15169 Google Inc.",
  "postal": "94040"
}

【讨论】:

  • 请记住,这个建议的解决方案(虽然正确)将执行一个额外的 GET 请求,这可能会减慢用户体验。此外,解决方案取决于ipinfo.io 是否可用。
  • 这似乎是一个简单的方法,我敢打赌。不过,我有点担心依赖第三方服务!
【解决方案2】:

如果这里的主要目标是迎合特定的人口群体,而不是尝试实施某种基于位置的锁定机制,那么不要使用地理位置数据库作为主要指南,而是考虑使用客户端的浏览器区域设置(参见Detect Browser Language in PHP)。

Maxmind 提供了一个简洁的(免费)基于 IP 的位置查询数据库:https://dev.maxmind.com/geoip/legacy/geolite/

【讨论】:

  • 4.28.143.0 4.59.175.255 68980480 71020543 美国 美国
  • 我从 Maxmind 数据库下载了美国的条目。如何使用这些信息并找到客户端浏览器位置?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 2014-01-19
  • 2011-12-07
  • 1970-01-01
相关资源
最近更新 更多