我需要能够使用MaxMind GeoLite
版本来查找用户国家/地区,城市和Longitude/Latitude
。除了经度/纬度所需的数据库之外,数据库对于我需要的数据库来说是显而易见的。
需要数据库;
longitude/latitude
?您可以下载多个版本。以下是您可以下载的列表;
我不明白这些意思是什么,并希望有一些帮助来确定我需要下载哪一个。
虽然我能够使用我的1and1商业帐户,但我还没有与数据库做任何事情。任何人都可以告诉我如何设置数据库并将这些文件上传到它?
最后,我在哪里可以找到有关使用我的新数据库的帮助,从中读取,回显用户位置以及页面的内容?
感谢您的时间和任何先进的帮助。
最诚挚的问候, 添
答案 0 :(得分: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区块/城市和城市位置(lat / lng)。 GeoLite国家/地区仅包含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)
);
Google是您的朋友:http://odkq.com/geolitecity
答案 1 :(得分:0)
使用GeoIP至少有三种方法:
一般情况下,地理数据数据库不是您可以直接访问的数据库,而是使用某种应用程序进行查找(针对IP地址)。
以下是安装GeoIP Lite数据库并将其提供给PHP的一些说明。这假设是CentOS / RHEL和Apache
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 PHP functions获得: