PHP中是否有函数可以检测IP类型?

Is there a function in PHP from which we can detect the type of IP?

我有一个使用 IP 的 Web 应用程序。我想知道我们是否 可以使用函数来检测 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)的变量。

任何帮助或线索?

您可以使用 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_ header)很容易被欺骗。