重複の可能性:
PHP を使用してユーザーの実際の IP アドレスを取得する
クライアントがページを離れたときにクライアントに関する情報を保存するスクリプトをサイトに持っています。たとえば、彼のネットワーク アドレスを取得することは可能ですか192.168.1.154
。
フォーラムでこれに関する議論を見たところ、使用するように言われまし$_SERVER['HTTP_X_FORWARDED_FOR']
たが、機能していません! 私の本当のIPが表示されます。
これどうやってするの?
重複の可能性:
PHP を使用してユーザーの実際の IP アドレスを取得する
クライアントがページを離れたときにクライアントに関する情報を保存するスクリプトをサイトに持っています。たとえば、彼のネットワーク アドレスを取得することは可能ですか192.168.1.154
。
フォーラムでこれに関する議論を見たところ、使用するように言われまし$_SERVER['HTTP_X_FORWARDED_FOR']
たが、機能していません! 私の本当のIPが表示されます。
これどうやってするの?
サーバーが 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())
$_SERVER['REMOTE_ADDR']
ドキュメントhttp://php.net/manual/en/reserved.variables.server.php
クライアントがローカルネットワークからあなたを訪問する場合は192.168.*.*
、取得する予定です。そうでない場合は、リモートIP35.88.33.11
これを使って:
<?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
}
);
});
お役に立てれば。
これはサーバー側では不可能です。192.168.1.154 のようなアドレスはルーティングできないため、サーバーはそれらについて何も知りません。一部のルーターが HTTP_X_FORWARDED_FOR ヘッダーを設定している可能性がありますが、それを当てにするべきではありません。Peter Szymkowski が提案するように、スクリプトがローカル ネットワークでのみ実行されている場合を除きます。
NAT の詳細については、 https://superuser.com/questions/63124/is-it-possible-to-get-the-nat-ip-addressを参照してください
のどのパラメータがvar_dump($_SERVER);
ネットワーク IP を表示するかがわかります。