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



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

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

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

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

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

http://geolocation-db.com/documentation

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

最新更新