【问题标题】:Detect IPv6 in PHP?在 PHP 中检测 IPv6?
【发布时间】:2011-07-19 20:17:31
【问题描述】:

我目前正在检测用户的 IPv4 地址并在 v4.1 中使用 IP 块。但是我想捕获 IPv6 并为此也有阻止列表,所以问题是: 将 IPv6 与 IPv4 获取相同的逻辑还是在 PHP 中使用不同的逻辑?我只是不确定每个设备是否都有 IPv4 和 IPv6 或者是其中之一,系统会自动检测它是什么格式并存储它?

【问题讨论】:

    标签: php ip-address ipv6


    【解决方案1】:

    Apache 将REMOTE_ADDR 报告给 PHP。如果 Apache 在 v6 接口上侦听,它将是 v6 地址。

    很容易区分。 IPv4 地址将始终包含句号 . 字符,而 IPv6 地址将始终包含冒号 :

    在创建阻止列表(或白名单)时,您应该小心处理 v6 地址。它们可以通过使用两个连续的冒号:: 来缩短。无法保证您的操作系统将使用较短或完整的形式,因此您的脚本必须处理它。详情请查看Wikipedia's IPv6页面。

    【讨论】:

    • inet_pton 会将两个族解析为二进制字符串,您可以通过字符串的长度来确定族。
    猜你喜欢
    • 2012-12-30
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    相关资源
    最近更新 更多