質問は知っていますが、stackoverflow で本当の答えが見つかりませんでした。これはX_FORWARDED_FOR
,SERVER_NAME
またはSERVER_REMOTE_ADDR
, サーバーに接続されているリモート クライアントのローカル IP アドレスを取得して、実際にローカル リモート ネットワークに接続されているユーザーを検出したい.
これを説明してください:
ISP <----> ROUTER <----> LOCAL NETWORK <----> LOCAL PC
私が知りたいことは何ですか?
- 接続されたリモート クライアントのパブリック IP アドレス
$_SERVER["REMOTE_ADDR"]
、わかりましたが!... - パブリック ネットワーク上の接続されたクライアントのローカル IP アドレス (192.168.xx、10.xxx、172.xxx)
この問題を解決するには?答えがあるので、ローカルIPアドレスを知りたい場合は、これは誰にとっても知っておくべきだと思います:
CURL
使用して機能する必要がありcurl_getinfo()
ます。次に、必要な URL アドレス (メイン サーバーの IP など) を指定します。次に例を示します。
<?php
$ch = curl_init();
$opt = curl_setopt($ch, CURLOPT_URL, "YOUR_SOME_URL_ADDRESS");
curl_exec($ch);
$response = curl_getinfo($ch);
$result = array('client_public_address' => $response["primary_ip"],
'client_local_address' => $response["local_ip"]
);
var_dump($result);
curl_close($ch);
?>
どの$response["primary_ip"]
応答があなたの公開アドレスで、$response["local_ip"]
どの応答がローカル アドレスであるかに注目してください。これは例です:
ISP <----> ROUTER <----> LOCAL NETWORK <----> LOCAL PC
/\ /\
|| ||
\/ \/
$response["primary_ip"] <----> $response["local_ip"]
213.x.x.x (for example) 192.168.1.3 (for example)
結果:
array (size=2)
'client_public_address' => string '213.xxx.xxx.xxx' (length=14)
'client_local_address' => string '192.168.1.3' (length=11)
これは、実際のローカル IP アドレスを与えるものではありません!
ありがとうございました。