问题标签 [ip2long]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
22 浏览

php - 如何像使用 ip2long 对 IPv4 所做的那样将 IPv6 转换为 long?

我有某个国家的 IP 数据库。我已经支付了 Ip2Lcoation 版本,并且获得了所有 IPv6 范围和 IPv4。在我的网络应用程序中,我使用 ip2long 函数将所有 IP 转换为 long。

它与 IPv4 完美配合,但在 IPv6 上却失败了?我搜索并发现了一些不起作用的功能。我的代码如下

我怎样才能做到这一点?

任何指导任何帮助?

0 投票
1 回答
21 浏览

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

我正在尝试确定网站访问者是否来自欧盟国家,如果是,则根据他们的法律向他们展示 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 行,这可能需要一段时间来处理。我正在寻找一种运行速度快的解决方案,以免减慢每个不在欧盟国家/地区的用户的速度。