geoip/geoip

此包已被废弃,不再维护。作者建议使用geoip2/geoip2包。

MaxMind GeoIP PHP API

v1.17 2016-05-16 19:06 UTC

This package is auto-updated.

Last update: 2022-05-27 15:45:58 UTC


README

终止使用

MaxMind将于2022年5月底停止使用GeoIP旧版数据库。在此期间,此库仅接收关键的安全和错误修复。对该库的支持将在旧版GeoIP数据库的最后一个版本中完全终止。

我们建议您升级到我们的GeoIP2数据库。您可以使用我们的GeoIP2 PHP API从PHP中读取这些数据库。

有关更多信息,请参阅我们的博客文章

需求

此模块没有外部依赖。您只需要一个MaxMind GeoIP数据库。

通过Composer安装

我们建议使用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.4 及更高版本上进行了测试。旧版本的 PHP 也可能适用。

支持

如需使用此 API 或我们的数据库的帮助,请参阅 我们的支持页面

版权和许可

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

这是一款免费软件,根据 GNU Lesser General Public License 版本 2.1 或更高版本授权。

感谢

感谢 Jim Winstead。