Geoip IP检测使用php和mysql数据库


Geoip IP Detect using php and mysql database

我使用Maxmind来检测IP地址,并在php中显示国家代码,国家名称和城市名称。通过geoip. dat、geoip显示以上信息没有问题。公司,geoipcity。公司等

我已经插入GeoIPCountryWhois.csv到我的sql数据库,

$mysqli->query('DROP TABLE ip2country'); $sql=" CREATE TABLE ip2country (ip_string_lo VARCHAR(16)  NOT NULL, ip_string_hi VARCHAR(16)  NOT NULL, ip_number_lo INT UNSIGNED NOT NULL, ip_number_hi INT UNSIGNED NOT NULL, country_code VARCHAR(2)   NOT NULL, country_name VARCHAR(64)  NOT NULL)";

你能告诉我如何使用我的数据库显示IP信息吗?由于

Maxmind数据库为平衡二叉树。它非常快。然而,把它放在MySQL中有时会使它更快。您需要从Maxmind获得CSV版本,最简单的方法是创建与CSV相同的结构。

然后你需要将IP地址转换为数字- PHP和MySQL都有这个功能。

最后执行简单的SQL并获取行。Maxmind CSV具有IP地址块,并将您的第一个和最后一个IP地址作为int。你的IP必须是"内部的"。

我个人建议将GeoIP放在Redis中,因为这样它会更快。


<标题> 更新

这是我几年前做的:

https://github.com/nmmmnu/GeoIP-Redis

我不是100%确定,如果导入仍然工作,但通过一些调整,它将能够导入数据。

目前,我正在使用nginx模块,自动完成所有这些,并在HTTP请求中给我一个头。

因为这是完全不同的方法,你可以查看解决方案或打开新的问题并联系我,我可以在那里回答。