0

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

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

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

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

4

1 回答 1

1

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

http://geolocation-db.com/documentation

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

于 2021-11-10T15:07:06.623 回答