2012-02-22 108 views
0

我有一個php頁面,學校的學生通過他們的iPad登錄..我需要在這個過程中記錄他們的IP地址(用於學校的記錄),但他們都有相同的IP地址與方法我使用:iPad的絕對IP地址?

if (getenv(HTTP_X_FORWARDED_FOR)) { 
    $ipaddress = getenv(HTTP_X_FORWARDED_FOR); 
} else { 
    $ipaddress = getenv(REMOTE_ADDR); 
} 

什麼是更深入的IP地址,我可以獲得這將是每個iPad獨一無二的?

+1

引用你的字符串! 'GETENV( 'HTTP_X_FORWARDED_FOR')'。 'HTTP_X_FORWARDED_FOR'不是一個常量(或者至少我懷疑它是)。 – deceze 2012-02-22 05:50:09

+1

通過記錄IP地址獲得什麼? – 2012-02-22 06:39:22

+0

當學生在他們的iPad上濫用,並且我們知道iPad濫用系統的IP地址時,我們可以告訴他是哪個學生。 – 2012-02-22 14:51:27

回答

1

這就是網絡的現實。唯一經過驗證的地址是$_SERVER['REMOTE-ADDR'],因爲這是TCP/IP握手協商的地址。這個地址可能只是路由器,代理,NAT設備或其他你無法「看到」的東西。 HTTP標頭中的其他內容完全無法證實,不可靠且容易被欺騙。

除非您完全控制並且完全瞭解客戶端與服務器之間的網絡,否則IP地址根本無法保證或預期爲唯一或「真實」。

這是因爲基於IP的分組交換網絡旨在將數據從網絡上的一個節點可靠地傳送到另一個節點。 IP地址是其實現細節。它們都不能用於唯一標識的目的。

0

聽起來像iPad是在NAT後面,在這種情況下,你將無法獲得他們的內部IP地址。即使你可以,它也不可能是每個iPad獨一無二的。