代码之家  ›  专栏  ›  技术社区  ›  diggersworld

如何在PHP中跟踪用户的位置/区域

  •  4
  • diggersworld  · 技术社区  · 16 年前

    http://api.hostip.info 但我测试的时候他们只会返回XX。

    如果有人知道更好的方法,请分享。

    谢谢。

    6 回复  |  直到 16 年前
        1
  •  1
  •   Spudley Pat    16 年前

    试试这些:

    http://ip-to-country.webhosting.info/

    http://www.ip2location.com/

    这两个都是IP地址到国家数据库,允许您查找给定IP地址的来源国。

    • 许多人使用代理来绕过特定国家的块和过滤器。
    • 许多IP范围被分配给地理分布广泛的公司;你只会得到他们所在的国家,而不是实际的机器所在的地方(这一直是跟踪AOL用户的一个大问题,因为他们显然都生活在弗吉尼亚州)
    • 知识产权范围的控制有时会在国家之间转移,因此您可能会从中得到错误的结果(特别是对于较小/联系不太好的国家)

        2
  •  3
  •   Ben    16 年前

    我用这个:

      $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
      $ip = $_SESSION['ip'];
      $try1 = "http://ipinfodb.com/ip_query.php?ip=".$ip."&output=xml";
      $try2 = "http://backup.ipinfodb.com/ip_query.php?ip=".$ip."&output=xml";
      $XML = @simplexml_load_file($try1,NULL,TRUE);
      if(!$XML) { $XML = @simplexml_load_file($try2,NULL,TRUE); }
      if(!$XML) { return false; }
    
      //Retrieve location, set time
      if($XML->City=="") { $loc = "Localhost / Unknown"; }
      else { $loc = $XML->City.", ".$XML->RegionName.", ".$XML->CountryName; }
      $_SESSION['loc'] = $loc;
    
        3
  •  0
  •   SirDarius    16 年前

    你应该使用 geoip library .

    见 http://www.maxmind.com/app/geolitecountry 免费数据库。

        4
  •  0
  •   Hannes    16 年前

    你可以使用地理定位来获取坐标,然后使用一些服务从中获取国家,但是地理定位API是基于浏览器的,所以你只能通过JavaScript访问它,然后以某种方式将这些信息传递给PHP,我曾经在JS部分写过一些东西:

    http://www.lautr.com/utilizing-html5-geolocation-api-and-yahoo-placefinder-example

    在通过IP获取位置时,有大量的服务提供数据库,有些是免费的,有些是收费的,有些是存储了大量IP和大量数据的,有些是少用的,例如你提到的,工作得很好:

    http://api.hostip.info/?ip=192.0.32.10

        5
  •  0
  •   dinesh    11 年前

    试试这些:

    $key=“9dcde915a1a065fbaf14165f00fcc0461b8d0a6b43889614e8acdb8343e2cf15”;

    $url=“ http://api.ipinfodb.com/v3/ip-city/?key=

    //加载xml文件

    $xml=simplexml加载文件($url); //打印第一个元素的名称

    回显$xml->getName()。”
    ";

    {

    echo $child->getName() . ": " . $child . "<br />";
    

    }

        6
  •  0
  •   IP2IQ    9 年前

    按照前面的建议,有很多方法可以做到这一点。但我建议您查看IP2 PHP库 https://github.com/ip2iq/ip2-lib-php 我们开发的。

    <?php
        require_once("Ip2.php");
    
        $ip2 = new \ip2iq\Ip2();
        $country_code = $ip2->country('8.8.8.8');
        //$country_code === 'US'
    ?>
    

    它不需要任何SQL或web服务查找,只需要一个本地数据文件。它比其他方法都快。数据库每月更新一次,你可以免费下载。

    https://gist.github.com/DHS/1340150