2

我需要能够使用该MaxMind GeoLite版本来查找用户 Country、City 和Longitude/Latitude. 除了经度/纬度所需的数据库之外,我需要哪些数据库是显而易见的。

需要数据库;

  • GeoLite 国家
  • GeoLite 城市
  • 我还需要什么或者可以longitude/latitude通过上述数据库找到什么?

您可以下载多个版本。以下是您可以下载的列表;

  • 二进制/gzip
  • 二进制/xz
  • CSV / gzip
  • CSV / 压缩包
  • CSV / xz

我不明白这些是什么意思,希望得到一些帮助来确定我需要下载哪一个。

虽然我可以使用我的 1and1 商业帐户,但我还没有对数据库做任何事情。谁能告诉我如何建立数据库并将这些文件上传到它?

最后,我在哪里可以找到有关使用我的新数据库、从中读取、将用户位置和页面回显的帮助?

感谢您的宝贵时间和任何高级帮助。

最好的问候,蒂姆

4

2 回答 2

1

如果您可以直接访问服务器/命令行,则可以使用二进制格式。这提供了更好的性能,但您需要更改 PHP 配置以安装 GeoIP 扩展或 Pecl 包。然后,您可以访问一些方便的 PHP 函数:http ://www.php.net/manual/en/ref.geoip.php

完整文档在这里:http ://www.php.net/manual/en/book.geoip.php

如果您无权访问服务器配置,则可以下载 CSV 版本并将其导入 MySQL 数据库。然后,您将可以直接访问数据,并且可以编写相关查询以生成应用程序所需的结果。如果您使用的是 PHP MyAdmin MySQL 面板,您可以直接下载 CSV gz 或 zip 并上传/导入。您需要先创建表。请记住在相关列上创建索引。

GeoLite City 包含两个表格,IP block/City 和 City Locations (lat/lng)。GeoLite Country 仅包含 IP 块和国家名称。

如果您不需要 IP 数据,世界城市数据库可能更适合: http: //www.maxmind.com/en/worldcities

- 编辑

如果您只关心 geoIP 城市数据的第二个文件,以下 SQL 将创建一个包含必要列的表:

DROP TABLE IF EXISTS location;
CREATE TABLE location(
    locId int(10) unsigned NOT NULL,
    country char(2) NOT NULL,
    region char(2) NOT NULL,
    city varchar(50),
    postalCode char(5) NOT NULL,
    latitude float,
    longitude float,
    dmaCode integer,
    areaCode integer,
    PRIMARY KEY (locId)
);

谷歌是你的朋友: http: //odkq.com/geolitecity

于 2013-02-23T20:34:55.077 回答
0

使用 GeoIP 的多种方式

有(至少)三种使用 GeoIP 的方法:

  • 将 GeoIP 安装为 PHP PECL 扩展(用于 Apache 或 NginX),并通过 PHP 访问它(还有其他语言,这只是更常见的一种。需要 root 和命令行访问权限。
  • 使用使用 GeoIP(如上安装)的分析包,例如开源Piwik
  • 如果您使用的是 Wordpress 之类的软件,则至少有一个插件 ( GeoIP Detect ) 不需要 root。

一般来说,地理数据数据库不是您可以直接访问的,而是使用某种应用程序进行查找(针对 IP 地址)。

以下是安装 GeoIP Lite 数据库并将其用于 PHP 的一些说明。这假设 CentOS/RHEL 和 Apache

在 CentOS/RHEL 和 Apache 上安装 GeoIP Lite

sudo mkdir /usr/share/GeoIP 
sudo cd /usr/share/GeoIP
sudo wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
sudo wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
sudo gunzip GeoIP.dat.gz
sudo gunzip GeoLiteCity.dat.gz
sudo yum update -y
sudo yum install -y geoip geoip-devel
sudo pecl channel-update pecl.php.net
sudo pecl install geoip
sudo nano /etc/php.d/geoip.ini

将以下内容添加到 geoip.ini 文件

extension=geoip.so
geoip.custom_directory = /usr/share/GeoIP/

重启网络服务器

GeoIP for PHP 下可用的地理变量

以下变量可通过GeoIP PHP 函数获得:

  • 国家
  • 地区(省、州)
  • 城市
  • 邮政编码
  • 纬度
  • 经度
  • DMA(美国/加拿大)
  • 电话区号(仅限 PSTN/NA)
  • 时区
于 2017-03-29T12:13:51.320 回答