【问题标题】:Geoip IP Detect using php and mysql databaseGeoip IP Detect 使用 php 和 mysql 数据库
【发布时间】:2015-10-12 15:22:28
【问题描述】:

我正在使用 Maxmind 检测 IP 地址并在 php 中显示国家代码、国家名称和城市名称。 我可以通过 GeoIP.dat、geoip.inc、geoipcity.inc 等显示以上信息

我已将 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 信息吗? 谢谢

【问题讨论】:

    标签: php mysql geoip


    【解决方案1】:

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

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

    最后你执行简单的 SQL 并获取行。 Maxmind CSV 有 IP 地址块,并给 youvfirst 和 last IP 地址作为 int。您的 IP 必须在块“内部”,例如MySQL '之间'。

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


    更新

    这是我几年前所做的:

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

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

    目前,我正在使用 nginx 模块,它会自动执行所有这些操作,并在 HTTP 请求中给我一个标头。

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

    【讨论】:

    • 分享一个通过php导入redis的高效例子?
    • 我正在更新答案
    猜你喜欢
    • 2015-10-17
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 2012-11-05
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    相关资源
    最近更新 更多