web-dev-qa-db-ja.com

PHPのマシンのIPアドレスは:: 1になりますが、なぜですか?

Phpを使用してマシンのIPアドレスを取得しようとしています。そのために私は次のようなコードを書いています:

<?php echo  "<br />".$_SERVER['REMOTE_ADDR'];?>

しかし、このコードは機能していません。 「::1 "。実際のIPアドレスを取得する方法を教えてください。

34
John

::1は実際のIPです。これは、ipv6ループバックアドレス(つまり、localhost)です。 ipv4を使用している場合、127.0.0.1

別のIPアドレスを取得する場合は、別のネットワークインターフェイスを介してサーバーに接続する必要があります。

58
Quentin

Localhostを実行しようとしている場合、この答えは問題を解決します。ほんの少しの変更

Apache2/httpd.conf 

すべての「聞く」単語を検索ex:

Listen 80

このようにします。

Listen 127.0.0.1:80

apacheを再起動するよりも

$_SERVER[REMOTE_ADDR]

Listen 127.0.0.1

あなたはこれで答えを見ることができます 詳細な回答リンク

9

ユーザーのIPアドレスを取得する場合は、次のようなことができます。

<?php
    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'];
    }
?>

<?php echo  "<br />".$ip;?>

プロキシなどに関係なく、ユーザーの実際のIPアドレスを取得します。

7

$ _SERVER ['REMOTE_ADDR']は、クライアントのIPアドレスです。

$ _SERVER ['SERVER_ADDR']はサーバーのIPアドレスです。

リファレンス: http://php.net/manual/en/reserved.variables.server.php

3
Tushar