2012-10-12 194 views
0

有2個服務器A和B.我在服務器B. 現在我的PHP腳本,客戶端的一些數據發送到服務器A和服務器A發送給服務器B.如何獲取使用php請求的服務器地址的IP地址?

我想要得到的IP地址請求來了(即服務器A)。我怎樣才能使用PHP?

如果我使用$_SERVER['REMOTE_ADDR'],我得到客戶端的IP地址。 如果我使用$_SERVER['SERVER_ADDR'],我會得到空值。

+0

這是一個與你的網絡服務器配置或行爲問題,如果它不填充'SERVER_ADDR'。 – mario

+0

您是否將客戶端瀏覽器重定向到服務器B? –

+0

可能重複: 去下面的問題, http://stackoverflow.com/questions/3003145/how-to-get-client-ip-address – Sujeet

回答

0

$_SERVER['SERVER_NAME'] and $_SERVER['HTTP_HOST']應該返回服務器的DNS名稱。如果你可以使用DNS而不是IP,我想也許你應該嘗試使用這些變量之一。儘管如前所述,如果沒有填充$_SERVER['SERVER_ADDR'],則可能是配置錯誤。

提供有關服務器,IIS/Apache,操作系統,PHP版本的信息,它可能更容易幫助。

另外,嘗試呼應/服務器上的日誌記錄$_SERVER['SERVER_ADDR']在請求到達,看看你從那裏得到的值,因爲服務器B閱讀$_SERVER['SERVER_ADDR']應該給你的IP服務器B.。如果你在服務器A上的值您可以在代碼中將值保存/傳遞給服務器B(無論您的服務器A到B的事務發生在哪裏)。

"The IP address of the server under which the current script is executing."

+0

REMOTE_ADDR會給我(服務器B)服務器A或客戶端的IP地址。服務器B的Coz,服務器A是客戶端。我覺得如果我的服務器配置設置正確,理論上REMOTE_ADDR應該給服務器A的IP – Sangam254

+0

這一切都取決於你如何傳遞值。如果您通過HTTP請求將值從服務器A傳遞給B,則服務器B上的$ _SERVER ['REMOTE_ADDR']應爲您提供服務器A的地址。 – Marcus

+0

它將成爲服務器B的HTTP POST表單服務器A。我使用REMOTE_ADDRESS獲取服務器A的IP? – Sangam254