获取web访问者的确切国家和城市(使用drupal 8或PHP本机)

获取web访问者的确切国家和城市(使用drupal 8或PHP本机),php,geolocation,location,drupal-8,Php,Geolocation,Location,Drupal 8,我需要我的网站知道访问者的真实和准确的位置,以提供他/她的近景元素 我尝试使用各种外部服务,他们告诉我我位于巴塞罗那(当我住在马德里时) 以下是我正在使用的服务: 知道PHP中的任何服务或方法来获取准确的位置数据吗?恐怕这是不可能的 解决这个问题的最好方法是使用javascript,从站点的访问者那里获取经度和纬度。当然,这需要访问者设备具有这样的能力。阅读更多关于这方面的信息 如果访问者设备不支持此方法,请使用IP地理位置作为备用。问题是它不像你发现的那样可靠。我住在挪威的卑尔根附

我需要我的网站知道访问者的真实和准确的位置,以提供他/她的近景元素

我尝试使用各种外部服务,他们告诉我我位于巴塞罗那(当我住在马德里时)

以下是我正在使用的服务:


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

恐怕这是不可能的

解决这个问题的最好方法是使用javascript,从站点的访问者那里获取经度和纬度。当然,这需要访问者设备具有这样的能力。阅读更多关于这方面的信息

如果访问者设备不支持此方法,请使用IP地理位置作为备用。问题是它不像你发现的那样可靠。我住在挪威的卑尔根附近,如果我用IP定位我的手机,它总是显示我在奥斯陆。这当然是因为我的手机运营商,但这也是一个问题,其他服务给你IP地址。您可以阅读更多关于IP地理位置准确度的信息


最后,在访问您的站点时,始终让用户能够告诉您他们的位置。

您可以尝试使用我们新的地理位置api

在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);

你应该试试HTML5地理定位。请访问了解更多信息。然而,它不是一个PHP服务。Camilo Go-我已经解释了我想做的事情:知道哪个城市和国家是访问,以便能够提供尽可能接近访问者的我的网站元素。获取一个城市并查询我的数据库,以获取该城市(或通过位置获取该城市附近)的记录Michael C-我已进入gelocation.com,它告诉我我来自巴塞罗那(当我在马德里时)。为什么所有这些服务或工具中的位置都不正确?它能给你一个正确的位置吗?