【发布时间】:2012-05-06 07:36:28
【问题描述】:
我有许多项目的功能依赖于$_SERVER['REMOTE_ADDR]、$_SERVER['HTTP_X_FORWARDED_FOR'] 和 $_SERVER['CLIENT_IP'] 提供的 IP 地址。
IPV4 地址很容易匹配,因为我们总是以相同的格式接收它们:4 个不带前导 0 的整数,用点 . 分隔。
而 IPV6 地址可以压缩。例如:FF01:0:0:0:0:0:0:101 -> FF01::101
我一直在研究这个问题,但没有发现任何相关信息,所以我想请教您的经验。 $_SERVER['REMOTE_ADDR] 是否使用标准?假设它总是以压缩或未压缩的形式接收是否安全?
或者我应该在尝试测试之前压缩所有的 IPV6 字符串?
注意:
理想情况下,我希望将 IPV6 地址作为字符串而不是二进制结构处理,以提高数据库/源代码的可读性并允许更轻松的 IP 范围匹配。
【问题讨论】:
-
我没有使用过 IPv6,但我的印象是你应该
inet_pton()任何你想操作的地址。 -
@ÁlvaroG.Vicario 感谢您的评论,我一定会研究这个功能。但如果可能的话,我想保留字符串表示法。