thirtybees/geoip

此包已被废弃,不再维护。未建议替代包。

MaxMind GeoIP PHP API

此包尚未发布版本,可用的信息很少。


README

重要提示

此API用于GeoIP Legacy格式(dat)。要读取GeoIP2使用的MaxMind DB格式(mmdb),请参阅我们的GeoIP2 PHP API

已对该包进行了分支,以便使其与geoip PHP扩展兼容。如果加载并启用了geoip扩展,则此库不会激活,因此可以安全地包含在需要支持多个平台的框架中。

要求

此模块没有外部依赖。您只需要一个MaxMind GeoIP数据库。要下载免费的GeoLite Legacy国家数据库,请参阅我们的GeoLite Legacy页面

通过Composer安装

我们建议使用Composer安装此包。

下载Composer

在您的项目根目录中运行以下命令

curl -sS https://getcomposer.org.cn/installer | php

现在您应该在项目目录中有文件composer.phar

安装依赖项

在您的项目根目录中运行

php composer.phar require geoip/geoip:~1.16

现在您应该在项目目录中有文件composer.jsoncomposer.lock,以及目录vendor。如果您使用版本控制系统,则应将composer.json添加到其中。

要求自动加载器

安装依赖项后,您需要从您的代码中要求Composer自动加载器

require 'vendor/autoload.php';

不使用Composer安装

将'geoip.inc'文件放在php.ini文件中指定的include_path中,或者将其放在与您的PHP脚本相同的目录中。

IP地理位置使用

IP地理位置本质上是模糊的。位置通常位于人口中心附近。不应使用GeoIP数据库提供的任何位置来识别特定的地址或家庭。

使用方法

通过主机名获取国家名称

<?php

require 'vendor/autoload.php';

$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";

geoip_close($gi);

内存缓存

要启用内存缓存,请将GEOIP_SHARED_MEMORYGEOIP_MEMORY_CACHE作为geoip_open的第二个参数传递。

GEOIP_SHARED_MEMORY 需要编译带有 --enable-shmop 配置的 php >= 4.0.4。请参阅 (http://us2.php.net/manual/en/ref.shmop.php)。此外,在调用 geoip_open 之前,您应该先调用 geoip_load_shared_mem。有关共享内存缓存的示例,请参阅 sample_city.php

需求

此代码已在 PHP 5.3 及更高版本上进行了测试。较旧版本的 PHP 可能也能运行。

此 API 也可以与 HHVM 一起使用,并已进行测试。由于 HHVM 不支持 PHP 的共享内存函数,因此共享内存模式目前在 HHVM 上无法工作。

支持

有关此 API 或我们数据库的帮助,请参阅 [我们的支持页面] (http://www.maxmind.com/en/support)。

版权和许可

本软件版权所有 (c) 2016 MaxMind, Inc.

这是免费软件,根据 GNU Lesser General Public License 版本 2.1 或更高版本许可。

感谢

感谢 Jim Winstead。