php获取ip的常用方法都是什么意思?
问题一:
获取ip的常用方法是用$_server数组的“http_client_ip”、“http_x_forwarded_for”、“remote_addr”这三个元素来获取。
那这三个元素值都分别代表什么呢?
我在网上查的是:
http_client_ip:代表客户端ip
http_x_forwarded_for:通过代理上网的客户端ip
remote_addr:连接ip
我的理解是:
(1)如果客户端是直接联网的:
http_client_ip:显示客户端ip
http_x_forwarded_for:没有
remote_addr:显示客户端ip
(2)如果客户端是通过代理服务器的:
http_client_ip:没有
http_x_forwarded_for:显示客户端ip
remote_addr:显示代理服务器ip
这么理解对吗?
问题二:
客户端的ip信息是通过header头发送过去的吧?那为什么用firefox查header头看不到相关的信息呢?
谢谢!
------解决方案--------------------
1,应该对吧,网上有一个经典的if语句,如果有需求可以拿来用,不过这只能识别君子,对小人无效。
2,http_x_forwarded_for,这个应该有。其他两个remote_addr和client_ip个人感觉是一样的东西,都是accept得到的ip,只不过是根据是否有http_xforwarded_for做不同的解释而已。
------解决方案--------------------
只有 remote_addr 反映的是用户真实的公网入口
其他的都是各种网络设备附加的内容,仅供参考
因为他们是可以随意构造的