2014-01-13 192 views
0

我需要獲取計算機的實際IP地址(而不是網關),但我嘗試過的所有解決方案都返回了網關IP地址。例如,來自此鏈接Get the client IP address using PHP的所有建議都會返回網關地址。有沒有一種方法可以得到我的電腦的實際IP地址(公共) - 無論是在PHP或Java?獲取實際機器的IP地址

+0

什麼樣的網關?你控制它嗎?你能相信嗎? – SLaks

+0

這就像一個AWS實例嗎? – Machavity

+0

當你說你需要獲取「我的電腦」的IP地址,「我的電腦」是運行PHP腳本的機器,還是使用網頁瀏覽器訪問運行PHP腳本的服務器的機器? –

回答

0

從評論,這聽起來像你想創建爲每臺計算機訪問服務器的唯一標識符。目前的信息中沒有一件,你可以得到,將作爲這樣一個標識符,這裏的原因:

IP地址 ,你可以看到的IP地址是公共地址,而不是設備的私有地址在NAT'd路由器後面。

MAC地址中的每個計算機的每個網卡 MAC地址是唯一的,但該信息並不局域網段可用的外部。

您可以使用多條信息(如IP地址和用戶代理)的組合來作出有根據的猜測,即給定的請求來自獨特的用戶,但這將是一個猜測。沒辦法確定它。

使用$_SERVER['REMOTE_ADDR']獲取用戶的公共地址,然後使用$_SERVER['USER_AGENT']獲取其用戶代理。如果這兩者的組合是唯一的,那麼很可能請求來自獨特的用戶。

另一種方法是設置一個具有遙遠將來到期日期或會話ID的cookie。但是,這一切都取決於您需要多長時間跟蹤用戶,如果您需要在關閉瀏覽器並在稍後返回之後對其進行跟蹤,等等。唯一完全可行的方法是創建一個帳戶,其中他們在您的網站進行身份驗證。

+0

對我有意義。謝謝! – bdfios

1

java's InetAddress class可能會有用。

InetAddress IP=InetAddress.getLocalHost(); 
System.out.println("IP is := "+IP.getHostAddress()); 

輸出:IP爲:= 10.100.95.228