ipv4和ipv6一起显示

时间:2018-02-04 21:08:54

标签: php ip

我目前正在建立一个网站,显示访客的IP,包括IPv4和IPv6,但如果访问者同时拥有两个网站,我似乎无法将它们显示在一起。



<p>IPv4: <?php

                                        if(filter_var($getIP, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
                                            echo $remoteIP;
                                        }
                                        else {
                                            echo "N/A";
                                        }

                                        ?></p>
                                    <p>IPv6: <?php

                                        if ( ipv6::isIPv6($remoteIP) ) {
                                            echo $remoteIP;
                                        } else {
                                            echo "N/A";
                                        }

                                        ?></p>
&#13;
&#13;
&#13;

GetIPv6 此代码检查用户是否将IPv6作为其IP

<?php
class ipv6 {
    function get_ip() {
        return getenv("REMOTE_ADDR");
    }
    function isIPv6($ip = "") {
        if ($ip == "") {
            $ip = ipv6::get_ip();
        }
        if (substr_count($ip,":") > 0 && substr_count($ip,".") == 0) {
            return true;
        } else {
            return false;
        }
    }
}

$remoteIP= $_SERVER['REMOTE_ADDR'];

GetIPv4

刚刚获得IPv4,最标准的IP

&#13;
&#13;
<?PHP

function getUserIP()
{
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }

    return $ip;
}

$getIP = getUserIP();

?>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

  

...但是如果访问者同时拥有两个网站,我似乎无法将它们显示在一起。

那是因为该信息不可用。

REMOTE_ADDR环境变量只包含一个IP地址 - 访问者用于访问服务器的IP地址。检测其他地址的唯一方法是强制浏览器发出另一个只能通过IPv4(或v6)的请求,例如:通过向没有IPv6(或v4)地址的域发出请求。