我知道問題,但沒有在stackoverflow上找到真正的答案。這不是X_FORWARDED_FOR
,SERVER_NAME
或SERVER_REMOTE_ADDR
,我想要獲得連接到我的服務器的遠程客戶端的本地IP地址,以檢測本地遠程網絡上真正連接的是誰。PHP |從客戶端用戶獲取私有IP地址?
解釋這一點:
ISP <----> ROUTER <----> LOCAL NETWORK <----> LOCAL PC
我想知道什麼?連接的遠程客戶端$_SERVER["REMOTE_ADDR"]
的
- 公共IP地址還行,但是!...公共網絡上連接的客戶端的
- 本地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地址!
謝謝。
爲什麼你需要本地IP地址?在PHP中有會話cookie和其他方式來唯一標識用戶的想法。 – marekful 2013-02-23 19:16:12
**但這是如何讓你的服務器本地IP **不是客戶端...使用任何代理進入你的網站,所以你會看到你完全錯誤 – Peter 2013-02-23 19:17:31
想想!你想找到一個真正的人在連接的房子?你不知道在家裏是否有太多擁有不同user_agent和端口的人?你的答案是抓住他們的本地IP地址,並要求得到哪個主機名在家中連接? – 2013-02-23 19:17:52