是否有替代$ _SERVER ['REMOTE_ADDR']。它返回訪問站點的計算機的IP地址。 我試圖搜索有關路由器分配的相同的外部IP,並進入此: How do two computers connect to same external address through NAT? 並發現如果計算機連接到相同的調制解調器,則分配相同的外部IP。 我在php中使用$ _SERVER ['REMOTE_ADDR']來創建一個簡單的登錄程序,以確定用戶是否已經登錄到同一網絡中的其他地方。如果這些計算機通過路由器連接到同一個調制解調器,這實際上不會工作。
2
A
回答
2
使用更傳統的基於cookie的登錄解決此問題。瀏覽器通過提供唯一標記來標識用戶。正如你所發現的那樣,葉問題並不是唯一的。
+0
謝謝,剛剛從你說的一個想法:} – 2011-05-12 14:02:55
7
不,這是你能做的最好的。服務器只知道請求來自何處,並且可能是是代理或NAT路由器或某個其他實體,其不是而是直接最終用戶。對此你無能爲力,這就是網絡的工作原理。
解決方案很簡單:不要使用IP來識別用戶。永遠。使用cookies。
+0
我還沒有說完整個故事,我實際上使用會話來存儲所有登錄的用戶名。而Cookie用於在本地存儲用戶名和IP。 – 2011-05-12 14:02:15
相關問題
- 1. PHP - > $ _SERVER ['REMOTE_ADDR'和Octects
- 2. PHP $ _SERVER ['REMOTE_ADDR']顯示IPv6
- 3. PHP - $ _SERVER [「REMOTE_ADDR」]不一致
- 4. $ _SERVER ['REMOTE_ADDR']值得信賴嗎?
- 5. $ _SERVER ['REMOTE_ADDR']總是isset()?
- 6. $ _SERVER ['REMOTE_ADDR']返回127.0.0.1
- 7. nginx爲php $ _SERVER準備set_proxy_header ['REMOTE_ADDR']
- 8. Ubuntu服務器和PHP $ _SERVER ['REMOTE_ADDR']
- 9. if($ bans [$ i] ['ip'] == $ _SERVER ['REMOTE_ADDR'])
- 10. 是否需要驗證$ _SERVER ['REMOTE_ADDR']?
- 11. 替代$ _SERVER ['HTTP_REFERER'] MSIE中的PHP變量
- 12. $ _SERVER ['REMOTE_ADDR']無法正常工作
- 13. 在內部網中僞造$ _SERVER ['REMOTE_ADDR']?
- 14. $ _SERVER ['REMOTE_ADDR']不返回IP地址
- 15. 如何安全使用$ _SERVER ['REMOTE_ADDR']和$ _SERVER ['HTTP_USER_AGENT']
- 16. 爲什麼$ _SERVER ['REMOTE_ADDR']返回127.0.0.1
- 17. 將$ _SERVER ['REMOTE_ADDR']設置爲假IP地址
- 18. GeoIP和$ _SERVER ['REMOTE_ADDR']有多準確?
- 19. 我們可以用php cURL來欺騙$ _SERVER ['REMOTE_ADDR']/user ip嗎?
- 20. PHP $ _SERVER ['REMOTE_ADDR']不再按預期給予用戶IP地址?
- 21. 登錄安全:我可以信任php的$ _SERVER ['REMOTE_ADDR']嗎?
- 22. PHP $ _SERVER ['REMOTE_ADDR']有時會解析爲空字符串
- 23. $ _SERVER ['REMOTE_ADDR']在php中報告不同的結構
- 24. substr with $ _SERVER ['REQUEST_URI'] in javascript
- 25. mysql - 替代IN()
- 26. $ _SERVER ['REMOTE_ADDR']沒有給出正確的IP地址
- 27. Nginx使用X-Forwarded替換REMOTE_ADDR
- 28. 如何在$ _SERVER ['REMOTE_ADDR']中設置通配符?
- 29. 可靠性PHP的$ _ SERVER [「REMOTE_ADDR」]
- 30. 高效替代「in」
將IP地址作爲唯一的用戶驗證是一個壞主意。你應該設置會話。參見http://php.net/manual/en/features.sessions.php – Diarmaid 2011-05-12 13:25:32
@Diarmaid或HTTP Auth eg。 http://php.net/manual/en/features.http-auth.php – Treffynnon 2011-05-12 13:26:51
ip地址不足以進行用戶認證(例如,如果用戶在同一個代理後面,你會做什麼?),你應該使用session。 – soju 2011-05-12 13:27:47