【问题标题】:Is there a function in PHP from which we can detect the type of IP?PHP中是否有可以检测IP类型的函数?
【发布时间】:2021-08-31 05:09:47
【问题描述】:

我有一个获取 IP 的网络应用程序。我想知道我们是否 可以使用函数来检测PHP中的IP类型(IPv4还是IPv6)?

我知道我们可以通过以下方式在 PHP 中获取 IP:

    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        } else {
            $ip = $_SERVER['REMOTE_ADDR'];
        }

这给出了 IP 地址,但我找不到给出它获得的 IP 类型(IPv4、IPv6)的变量。

任何帮助或线索?

【问题讨论】:

  • 为什么不简单地使用正则表达式?模式明显不同......
  • 是的,我可以,但我想知道 PHP 是否提供这种支持?

标签: php web-applications ip ipv6 ipv4


【解决方案1】:

您可以使用filter_var来验证它是什么类型的IP地址

例如

filter_var('127.0.0.1', FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); // true
filter_var('::1', FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); // true

不要忘记HTTP_X_FORWARDED_FOR(或任何其他_X_ 标头)很容易被欺骗。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多