获取站点访问者位置的最佳方法是啥? [关闭]
Posted
技术标签:
【中文标题】获取站点访问者位置的最佳方法是啥? [关闭]【英文标题】:What is the best way to get a site visitor's location? [closed]获取站点访问者位置的最佳方法是什么? [关闭] 【发布时间】:2011-12-19 03:22:03 【问题描述】:谷歌搜索后,我发现许多解决方案似乎不起作用或需要用户许可。
寻找易于使用的东西,php 或 javascript,并且不需要用户的许可。它不需要是最准确的。
【问题讨论】:
看右边的相关问题,这个被问了很多 最好的方法?问他们。否则,请使用 GeoIP,并为它在许多情况下非常不准确做好准备。 使用 geoIP 您将无法获得确切的位置。使用 html5 来利用附近的 Wifi 接入点来获取更准确的位置需要用户许可,您无法规避这一点。 【参考方案1】:Google Analytics 非常适合这个 (javascript)。
编辑: 应该指出,如果您需要以编程方式对其进行处理,Google Analytics 有一个 API 可以获取城市/国家信息和所有报告信息 - http://code.google.com/apis/analytics/docs/
但如果这不是一个选项:
您可以使用 PHP 的$_SERVER['REMOTE_ADDR']
获取用户 ip
这样,您可以使用 PHP 的 GeoIP 库对其进行地理定位:http://php.net/manual/en/book.geoip.php
【讨论】:
我无法从您在上面提供的 Google 链接中获取和使用 GA 获取城市信息。你能详细说明一下吗?谢谢【参考方案2】:这是我用的(可以通过$_SERVER['REMOTE_ADDR']
获取IP并传给函数):
function GeoData($ip)
$Content = CurlGet("http://api.hostip.info/get_html.php?ip=" . $ip . "&position=true");
$ContentArr = explode("\n", $Content);
$Stack = array();
$Ctr = 0;
foreach($ContentArr as $Item)
if($Ctr == 2)
$Ctr++;
continue;
if($Ctr == 6)
break;
$SingleItemArr = explode(":", $Item);
array_push($Stack, $SingleItemArr[1]);
$Ctr++;
$MappedStr = array("country" => $Stack[0], "city" => $Stack[1], "latitude" => $Stack[2], "longitude" => $Stack[3], "ip" => $Stack[4]);
$JsonEncoded = json_encode($MappedStr);
return $JsonEncoded;
【讨论】:
【参考方案3】:我认为指出通过 php 从 MaxMind 查询 GEO IP 数据库是一个很好的解决方案是非常重要的,如果该站点的流量超出您将不得不投资的个人站点的流量在 MaxMind 许可证中。在为大容量电子商务零售网站集成 MaxMind 的经验之后,成本可能相当高(尽管支付系统方面的好处非常值得)。
还有一条评论。 GeoIP 仅准确到用户连接到的 ISP 本地 DNS 服务器的一般覆盖区域。它不是全球定位系统。它通常不会下降到街道水平。而且,如果用户通过代理、*** 等进行连接,则数据/信息将毫无用处。
【讨论】:
以上是关于获取站点访问者位置的最佳方法是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
将布局样式应用于站点上不同位置的样式组件和 React 组件的最佳方法是啥?
以编程方式访问 Graphite 数据的最佳方式是啥? [关闭]
编写 Maven2 站点插件时获取站点资源列表的最佳方法是啥?