【问题标题】:What's the best way to do IPv6 check in PHP? [closed]在 PHP 中进行 IPv6 检查的最佳方法是什么? [关闭]
【发布时间】:2014-02-06 13:08:22
【问题描述】:

现在我正在使用 strcmp,但这并不是最佳选择。

那么,最好的方法是什么?

【问题讨论】:

    标签: php ip ipv6


    【解决方案1】:

    你也可以使用filter_var

    if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
        echo "IPV6 valid.";
    } else {
        echo "Not valid.";
    }
    

    您可以找到过滤器列表here

    【讨论】:

    • 可能是最好的解决方案。我不知道存在 IPv6 过滤器。
    【解决方案2】:

    使用 strcmp 代替 strcpy。那一定是问题所在。

    【讨论】:

      【解决方案3】:

      你可以检查一下,如果: 在 IP 地址中:

      if (strpos($_SERVER["REMOTE_ADDR"],":") !== false) //....IPv6
      else //....IPv4
      

      【讨论】:

        【解决方案4】:

        使用inet_pton。也适用于 ipv4:

        function ip_validate($ip){
            return inet_pton($ip) !== false;
        }
        

        【讨论】:

        • 好主意,但据我所知,他想知道它是 IPv6 还是 IPv4。这将返回 true,无论是 IPv6 还是 IPv4
        • 真的吗?无法从问题中扣除。
        • 好吧,他问What's the best way to do IPv6 check in PHP?。如果他只是想检查 IP,他就不会要求 IPv6。但是 idk,也许我只是误解了他。
        【解决方案5】:

        $_SERVER["REMOTE_ADDR"]这是你的朋友。它检查地址。我想最简单的方法是检查这个地址是否有非数字符号。如果它包含一个,它是一个 IPv6 地址。也许有更好或更优雅的,但我从未使用过它,因为还没有提供商使用 IPv6。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-25
          • 2023-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多