【问题标题】:How create GeoIP functionality in PHP project?如何在 PHP 项目中创建 GeoIP 功能?
【发布时间】:2011-05-24 07:06:15
【问题描述】:

我有一些 IP 地址 ($_SERVER['REMOTE_ADDR']),我必须收到(学习)国家名称,如果我也能收到(学习)城市名称,那就太好了。并且不要忘记它是 php 项目,有用的 API - 非常好。

P.S.这是一个开源项目,我们只能使用免费和开源的工具。

【问题讨论】:

标签: php geolocation geoip


【解决方案1】:

PHP 有一些有用的内置函数GeoIP-functions。它们应该足够了:

$details = geoip_record_by_name($_SERVER['REMOTE_ADDR']);
echo $details['city'];

【讨论】:

  • 并不是因为它们在手册中,所以它们是内置的,你知道...这个不是。
【解决方案2】:

您也可以在这里查看:MaxMind GeoIP PHP API

【讨论】:

    【解决方案3】:

    无(仅需要“GeoIP.dat”文件)。下载免费的 GeoIP 标准国家 数据库,去 http://maxmind.com/download/geoip/database/

    安装

    只需根据'include_path'指令将'geoip.inc'文件放在某处 您的 'php.ini' 文件,或者将其放在与 PHP 脚本相同的目录中。

    用法

    通过主机名获取国家/地区名称:

    include("geoip.inc");
    
    $gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD);
    
    echo geoip_country_code_by_addr($gi, "24.24.24.24") . "\t" .
         geoip_country_name_by_addr($gi, "24.24.24.24") . "\n";
    echo geoip_country_code_by_addr($gi, "80.24.24.24") . "\t" .
         geoip_country_name_by_addr($gi, "80.24.24.24") . "\n";
    

    HTH。

    【讨论】:

    • 谢谢!帮了我很多,+1。但请注意,您必须geoip_close(),并且您需要其他数据库来收集城市名称和 ASN(他们的 ISP)等信息,并且 IPv6 支持需要以“v6”为后缀的数据库。
    • 这应该是最佳答案。像ipinfo.io 这样的免费服务不可靠我总是收到错误消息,有时他们会禁止 IP 地址。最后他们从他们的网站“这个产品包括 GeoLite2 数据”使用相同的数据库
    【解决方案4】:

    我决定使用来自http://lite.ip2location.com/ 的免费数据库,它比迄今为止所有其他人都做得更好。

    【讨论】:

      【解决方案5】:

      在 Linux 环境中 1. sudo yum install php56-devel geoip geoip-devel php-pear 2.须藤pecl安装geoip 3. extension=geoip.so(在php.ini中加入这一行) 4. 将.dat 文件移动到/usr/share/GeoIP 文件夹中

      在 Windows 环境中 1. 将 .dll 移至 ext 文件夹 2. 将 .dat 文件移动到 apache/bin 文件夹中 3.在php.ini中添加dll扩展

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-18
        • 2023-04-01
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        • 2019-12-17
        相关资源
        最近更新 更多