获得网站访问者位置的最佳方法是什么?
What is the best way to get a site visitor's location?
在谷歌上搜索后,我发现许多解决方案似乎都不起作用,或者需要用户的许可。
寻找易于使用的东西,PHP或Javascript,并且不需要用户的许可。它不需要是最精确的
Google Analytics for this (javascript).
编辑:应该指出,谷歌分析有一个API来获取城市/国家信息和所有报告信息,如果你需要通过编程来做一些事情- http://code.google.com/apis/analytics/docs/
但如果没有这个选项:
你可以用PHP的$_SERVER['REMOTE_ADDR']
有了它,你可以使用PHP的GeoIP库来定位它:http://php.net/manual/en/book.geoip.php
这就是我使用的(您可以通过$_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;
}
我认为有必要指出的是,通过php从MaxMind查询GEO IP数据库是一个很好的解决方案,如果站点要有任何流量超过个人站点,那么您将不得不投资MaxMind许可证。我有将MaxMind整合到大量电子商务零售站点的经验,成本可能相当高(尽管在支付系统方面的好处非常值得)。
还有一个评论。GeoIP仅精确到用户所连接的ISP本地DNS服务器的一般覆盖区域。它不是GPS。它通常不会降到街道水平。而且,如果用户是通过代理,VPN等连接,数据/信息是无用的。
相关文章:
- 有条件更新d3.js力图中节点的最佳方法
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- 从数组中删除元素的最佳方法是:javascript/jquery
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 列出没有 mysql 的元素的最佳方法是什么
- 在jquery库中重新定义方法的最佳方法
- Javascript,用vars创建对象的最佳方法
- 使用 jQuery 从 HTML 中获取某些值的最佳方法
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 用jasmine测试JavaScriptUI的最佳方法
- 使用javascript:在没有阻止html标记(<b>、<p>等)的情况下,阻止脚本的最佳方法
- 如果我返回表,检查 Ajax 调用是否为 200 OK的最佳方法是什么
- JavaScript - 创建可链接函数时的最佳方法是什么
- 在上下文菜单项单击上显示侧边栏/弹出窗口的最佳方法是什么
- 在 JavaScript 中获取范围的随机数的最佳方法
- 在对象类上实现 jquery 作用域的最佳方法
- 将同步函数包装到承诺中的最佳方法是什么?
- 使用 MVC 删除 JavaScript 中硬编码字符串 Asp.Net 最佳方法