如何显示在IPv4的IP地址,其显示:: 1的网页(how to show The IP addre

2019-09-18 12:24发布

我想显示计算机的客户端的IP地址。 但是,在我的电脑这只是本地主机秀“:: 1”运行。 如果我在本地主机上运行,​​它应该是显示127.0.0.1。 因此,如何展现尤其是在IPv4的IP地址。 因为我在另一篇文章,该:: 1在IPv6中读取。 这里是我的代码:

function get_ip()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

$ip = get_ip(); 

echo $ip;

给我帮助解决这个问题。 谢谢。

Answer 1:

如果你想在Web服务器上看到你从127.0.0.1连接,那么你必须通过IPv4的连接。 尝试导航到http://127.0.0.1 ,而不是http://localhost 。 如果您是通过IPv6连接当然 Web服务器会报告一个IPv6地址。



Answer 2:

function getIP() {
    $ip = $_SERVER['SERVER_ADDR'];

    if (PHP_OS == 'WINNT'){
        $ip = getHostByName(getHostName());
    }

    if (PHP_OS == 'Linux'){
        $command="/sbin/ifconfig";
        exec($command, $output);

        $pattern = '/inet addr:?([^ ]+)/';

        $ip = array();
        foreach ($output as $key => $subject) {
            $result = preg_match_all($pattern, $subject, $subpattern);
            if ($result == 1) {
                if ($subpattern[1][0] != "127.0.0.1")
                $ip = $subpattern[1][0];
            }

        }
    }

    return $ip;
}

echo getIP();


文章来源: how to show The IP address in IPv4 which show ::1 in the web page
标签: php ip ipv4