2017-07-27 20 views
-1

我需要我的网站知道访问者提供他/她近元素的真实和准确的位置。获取确切的国家和城市的网络访问者(在Drupal 8或PHP本地)

我想消费各种外部服务,他们告诉我,我位于巴塞罗那(当我住在马德里)。

这些都是我消费的服务:

知道任何服务或PHP中的任何方式来获得准确位置数据?

+0

你应该尝试HTML5地理定位。请访问http://www.geolocation.com了解更多信息。但是,它不是PHP服务。 –

+0

Camilo Go - 我已经解释了我想要做的事情: 了解哪个城市和国家的访问能够为访问者提供尽可能贴近我网站的元素。 获取城市并查询我的数据库以获取该城市的记录(或通过位置在该城市附近) – Javier

+0

Michael C - 我进入了gelocation.com,它告诉我我来自巴塞罗那(当我在在马德里)。为什么这些位置在所有这些服务或工具中都不正确?它给你一个正确的位置? – Javier

回答

0

恐怕这是不可能的。

解决这个问题的最好方法是使用javascript并从您的网站访问者获取经度和纬度。这当然要求访问者设备具有这样的能力。在MDN web docs处了解更多。

如果您的访客设备不支持此方法,请使用IP地理位置作为后备。问题在于它不像您发现的那样可靠。我住在挪威卑尔根附近,如果我用IP来定位我的手机,它总是表明我在奥斯陆。这是由于我的手机运营商,但这也是其他服务给你IP地址的问题。你可以阅读更多关于如何准确的IP地理位置在WhatsMyIPAddress.com

最后,总是让用户能够在访问您的网站时为您提供他们的位置。

0

您可以尝试使用我们的新的地理位置API https://ip-api.io/

在PHP它可以工作是这样的:

$ipAddress = $_SERVER['REMOTE_ADDR']; 
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { 
    $ipAddress = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])); 
} 
$data = json_decode(file_get_contents("http://ip-api.io/api/json/$ipAddress")); 
var_dump($data); 
相关问题