PHP计算子网ip2long的长整数范围

PHP Calculate Long Integer Range of Subnet ip2long

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

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

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

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

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

http://geolocation-db.com/documentation

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