gpt4 book ai didi

PHP 脚本混淆 GEO Lite DB

转载 作者:行者123 更新时间:2023-11-29 23:08:31 26 4
gpt4 key购买 nike

我需要从用户 IP 获取国家/地区名称。据我所知,可以通过两种方式完成:

  1. 调用第三方 API(但这可能会很慢)
  2. 使用自己的数据库

所以,我从以下站点下载 IP 数据库: http://dev.maxmind.com/geoip/legacy/geolite/

并在我的数据库中创建一个表,然后使用 php 脚本获取 IP 和国家/地区

但它不适用于我自己的国家:(

但在我检查我的 vps 时可以工作

目前我的IP是:180.211.255.204

所以,我认为数据库可能没有更新。

但是当我尝试使用该网站演示测试相同的 IP 时,它工作正常:

https://www.maxmind.com/en/geoip-demo

那么问题出在哪里呢?数据库不同还是我的代码有问题?

我很困惑:(

这是我用来获取国家/地区的代码:

$strSQL="SELECT `country_name` FROM `IPCountry` WHERE INET_ATON('" . $strIP . "') BETWEEN ip_range_start_int AND ip_range_end_int LIMIT 1";

提前致谢

最佳答案

如果其他 IP 返回正确的结果,您的查询/代码可能没问题。

这里有一些需要考虑/尝试的事情:1. Maxmind 本身(在演示中)可能不使用他们自己的数据库的精简版,因此您在那里得到的结果可能会更准确。

  • 您还可以尝试使用 GeoLite2 数据库,您可以在此处找到该数据库。

  • 您应该尝试 maxmind 提供的 php 扩展,而不是执行 sql 查询,因为它可能要快得多。有关如何使用此扩展的说明可以在这里找到:http://maxmind.github.io/GeoIP2-php/

  • 顺便说一句。我自己使用 geolite2 数据库,它返回“孟加拉国”作为您提供的 IP 的国家/地区。 (参见:http://geoip.nekudo.com/api/180.211.255.204)

    关于PHP 脚本混淆 GEO Lite DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184931/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com