是否有替代$ _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. $ _SERVER ['REMOTE_ADDR']总是isset()?
- 2. nginx为php $ _SERVER准备set_proxy_header ['REMOTE_ADDR']
- 3. $ _SERVER ['REMOTE_ADDR']无法正常工作
- 4. 替代$ _SERVER ['HTTP_REFERER'] MSIE中的PHP变量
- 5. 在内部网中伪造$ _SERVER ['REMOTE_ADDR']?
- 6. $ _SERVER ['REMOTE_ADDR']不返回IP地址
- 7. 为什么$ _SERVER ['REMOTE_ADDR']返回127.0.0.1
- 8. GeoIP和$ _SERVER ['REMOTE_ADDR']有多准确?
- 9. 登录安全:我可以信任php的$ _SERVER ['REMOTE_ADDR']吗?
- 10. PHP $ _SERVER ['REMOTE_ADDR']有时会解析为空字符串
- 11. Nginx使用X-Forwarded替换REMOTE_ADDR
- 12. 如何在$ _SERVER ['REMOTE_ADDR']中设置通配符?
- 13. $ _SERVER ['PHP_SELF']的替代选择是什么?
- 14. $ _SERVER ['REMOTE_ADDR']基于浏览器的位置回退?
- 15. 突然$ _ SERVER [“REMOTE_ADDR”]开始返回10.10.10.10 PHP
- 16. $ _SERVER ['REMOTE_ADDR'];可能的返回值是什么?
- 17. 负载平衡器$ _SERVER ['REMOTE_ADDR']不起作用
- 18. $ _SERVER ['REMOTE_ADDR']返回5个数字长的IP
- 19. PHP $ _SERVER和url?
- 20. PHP REMOTE_ADDR和安全会话
- 21. SELECT .. IN的替代方案(..)
- 22. 用JOIN声明代替“IN”
- 23. 替代使用IN子句
- 24. 为什么$ _SERVER [“REMOTE_ADDR”]显示与我的外部IP不同的IP?
- 25. PHP/html:替代刷新
- 26. 使用REMOTE_ADDR curl登录到Facebook php
- 27. PHP替代trac?
- 28. PHP $ _SERVER ['DOCUMENT_ROOT']和htaccess?
- 29. php $ _SERVER ['DOCUMENT_ROOT']问题
- 30. PHP call_user_func替代
将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