【问题标题】:PHP Calculate Long Integer Range of Subnet ip2longPHP计算子网ip2long的长整数范围
【发布时间】:2021-12-23 04:08:09
【问题描述】:

我正在尝试确定网站访问者是否来自欧盟国家,如果是,则根据他们的法律向他们展示 cookie 同意横幅。

我下载了一个列出所有欧盟国家 IPv4 的表格(即:1.178.224.0/19)并将其上传到 mySQL。表中有 107,000 行。我可以使用 $_SERVER['REMOTE_ADDR'] 获取用户 IP。我正在寻找最简单、最快捷的方法来检查用户的 IP 地址是否在该范围内。

一个想法是在一个表中创建 2 列,其中包含每个 IPv4 的开始和结束长整数。该网站将使用 ip2long() 将用户 IP 地址更改为长整数,然后查看它是否在任何 IPv4 的 2 列范围内。不确定这是否可能。如果这是个好主意,我如何获取 IPv4 地址的开始和结束长整数?

我找到了几种解决方案来查看 IP 是否在我的表中列出的范围内(即:1.178.224.0/19),但是对于 107,000 行,这可能需要一段时间来处理。我正在寻找一种运行速度很快的解决方案,以免降低每个不在欧盟国家/地区的用户的速度。

【问题讨论】:

    标签: php ip ip2long


    【解决方案1】:

    您可以使用免费的在线服务,而不是尝试自己实施地理定位。您可以很快实现这一点。以这个服务为例:

    http://geolocation-db.com/documentation

    我会使用 Javascript 而不是 PHP,并且只有当用户位于欧盟国家/地区时,您才会弹出 cookie 同意横幅。

    【讨论】:

    • 太棒了,谢谢KIKO!
    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2012-10-06
    • 2012-12-28
    • 1970-01-01
    • 2010-12-21
    • 2015-05-20
    • 2014-04-12
    • 1970-01-01
    相关资源
    最近更新 更多