2014-10-06 106 views
0

我正在嘗試使用我所做的頁面形式的某人的公有IP。如何獲得公共IP

我不知道用哪種編程語言可以做到這一點。我正在網上閱讀,並發現一些:

// PHP Code 
$_SERVER["REMOTE_ADDR"] 

此輸出:127.0.0.1(本地IP)。

然後我發現這太:

// PHP Code 
$externalContent = file_get_contents('http://checkip.dyndns.com/'); 
preg_match('/\b(?:\d{1,3}\.){3}\d{1,3}\b/', $externalContent, $m); 
$externalIp = $m[0]; 

此輸出正確的IP(公網IP),但需要使用其他的網頁(http://checkip.dyndns.com/)。

我想知道如何獲得公共IP?我正在尋找一種方式來獲取它,而不需要使用其他網頁。謝謝。

+1

'print_r($ _ SERVER);' – 2014-10-06 02:50:44

+0

你通過'http:// localhost'找到你的服務器嗎?除了'127.0.0.1'之外,你不會得到任何東西爲了獲得連接用戶的IP,他不應該通過環回地址連接。 http://en.wikipedia.org/wiki/Localhost – Cheery 2014-10-06 02:51:03

+1

爲什麼你不能使用其他網頁?第二種方法工作得很好。 – Wold 2014-10-06 02:55:38

回答

1

$_SERVER["REMOTE_ADDR"]應該適合你在這裏要做的事情。你得到127.0.0.1的原因是因爲你在本地環境中運行它。

如果你把這個腳本在實時網絡服務器和訪問它,你會從$_SERVER["REMOTE_ADDR"]得到相同的IP,因爲我得到當我檢查whatismyip

而且無論如何,具有服務器的呼叫:

$externalContent = file_get_contents('http://checkip.dyndns.com/'); 

只會讓你成功返回你的服務器的IP地址,而不是訪問者。

+0

謝謝。那麼現在應該如何獲得訪問者IP? – 2014-10-06 14:12:25

+0

$ _SERVER [「REMOTE_ADDR」]包含訪問您的網絡服務器的計算機的IP地址。你得到127.0.0.1的唯一原因是因爲你在本地運行它 – 2014-10-06 20:26:09

+0

好吧,我明白了,謝謝。 – 2014-10-06 21:13:44

0

這個問題讓我難住了很久。

如果你有權訪問你自己的遠程服務器,我做了什麼來解決這個問題是創建一個簡單的服務器端腳本echo $_SERVER['REMOTE_ADDR'];給我的ISP從我的本地主機分配給我的設備的公共IP。