我有一个为使用 GeoIP 数据库而构建的模块。我使用它来获取访问网站的用户的位置,我们可以提供从 YQL 天气中提取的他们所在城市(仅限美国)的当前天气。我发现这个https://stackoverflow.com/questions/12365078/best-way-to-get-location-weather-details-accurately如果不让用户输入他们的位置,它的读数不会非常准确。
到目前为止,它已成功显示 90% 的正确位置,有时我们必须更新 DHCP 租约才能获得正确的位置……但我的客户仍然无法在他们的办公室中找到正确的城市。我对他们的网络连接不太了解,但我想知道它是否正在被转发,等等......
以下是我在模块上获取用户 IP 的方式:
function getIpAddresses() {
$ipAddresses = array();
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$ipAddresses['proxy'] = isset($_SERVER["HTTP_CLIENT_IP"]) ? $_SERVER["HTTP_CLIENT_IP"] : $_SERVER["REMOTE_ADDR"];
$ipAddresses['user'] = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
$ipAddresses['user'] = isset($_SERVER["HTTP_CLIENT_IP"]) ? $_SERVER["HTTP_CLIENT_IP"] : $_SERVER["REMOTE_ADDR"];
}
return $ipAddresses;
}
有没有更好的方法来获取 IP/提高准确性而不要求用户输入他们的位置?谢谢!