1

重複の可能性:
PHP を使用してユーザーの実際の IP アドレスを取得する

クライアントがページを離れたときにクライアントに関する情報を保存するスクリプトをサイトに持っています。たとえば、彼のネットワーク アドレスを取得することは可能ですか192.168.1.154

フォーラムでこれに関する議論を見たところ、使用するように言われまし$_SERVER['HTTP_X_FORWARDED_FOR']たが、機能していません! 私の本当のIPが表示されます。

これどうやってするの?

4

5 に答える 5

3

サーバーが NAT されたネットワークの外部にある場合、クライアントの内部ローカル IP を取得することはできません。これはセキュリティ上のリスクになるだけでなく、NAT の目的を無効にします。

彼のローカルの NAT された IP が必要な場合は、javascript を実行できます。次のようなものが機能する可能性があります

function myIP(){
  var yip2=java.net.InetAddress.getLocalHost(); 
  var yip=yip2.getHostAddress();
  return yip;
}//end myIP

alert("your machine's local network IP is "+ myIP())
于 2012-08-28T14:28:56.977 に答える
2

$_SERVER['REMOTE_ADDR']

ドキュメントhttp://php.net/manual/en/reserved.variables.server.php

クライアントがローカルネットワークからあなたを訪問する場合は192.168.*.*、取得する予定です。そうでない場合は、リモートIP35.88.33.11

于 2012-08-28T14:12:33.540 に答える
2

これを使って:

<?php  

   echo $_SERVER['REMOTE_ADDR'];  //ip of visitor - you need this

   echo $_SERVER['SERVER_ADDR'];  //ip of server

?>

JSON を使用すると、次のコードを使用してクライアント IP を取得することもできます。

$(document).ready(function(){

    //Service 1
    $.getJSON( "http://smart-ip.net/geoip-json?callback=?",
            function(data){
                alert( data.host);
            }
    );

    //Service 2
    $.getJSON( "http://jsonip.appspot.com/?callback=?",
            function (json){
                alert( "User ip: " + json.ip); // alerts the ip address
            }
    );

});

お役に立てれば。

于 2012-08-28T14:13:01.853 に答える
0

これはサーバー側では不可能です。192.168.1.154 のようなアドレスはルーティングできないため、サーバーはそれらについて何も知りません。一部のルーターが HTTP_X_FORWARDED_FOR ヘッダーを設定している可能性がありますが、それを当てにするべきではありません。Peter Szymkowski が提案するように、スクリプトがローカル ネットワークでのみ実行されている場合を除きます。

NAT の詳細については、 https://superuser.com/questions/63124/is-it-possible-to-get-the-nat-i​​p-addressを参照してください

于 2012-08-28T14:16:16.257 に答える
0

のどのパラメータがvar_dump($_SERVER);ネットワーク IP を表示するかがわかります。

于 2012-08-28T14:16:36.793 に答える