获得网站访问者位置的最佳方法是什么?


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']

获取一个用户的ip

有了它,你可以使用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等连接,数据/信息是无用的。