0

コンピューターのクライアントの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;

これを修正するのを手伝ってください。ありがとうございました。

4

2 に答える 2

1

Webサーバーに127.0.0.1からの接続を認識させたい場合は、IPv4経由で接続する必要があります。http://127.0.0.1の代わりにに移動してみてくださいhttp://localhost。IPv6経由で接続している場合は、もちろんWebサーバーがIPv6アドレスを報告します。

于 2012-06-25T19:11:33.593 に答える
0
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();
于 2017-09-04T13:03:48.543 に答える