>백엔드 개발 >PHP 튜토리얼 >php获取ip有问题

php获取ip有问题

WBOY
WBOY원래의
2016-06-23 13:30:28827검색

网上给的各种获取php的ip地址的源码,都有这么一行:

if($_SERVER['HTTP_X_FORWARDED_FOR'])
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];

可是HTTP_X_FORWARDED_FOR这个字段返回的不一定是一个ip,有可能是多个ip用逗号分隔。

查了下官方标准协议,HTTP_X_FORWARDED_FOR这个确实可能返回多个ip地址,那么问题来了,网上的那些获取ip方法,还有些开源项目封装的获取ip方法,是不是有bug?


回复讨论(解决方案)

HTTP_X_FORWARDED_FOR 记录的是访问代理服务器的用户 ip
如果有多个,则表示访问经过了多个代理服务器

网上的那些获取ip方法,本来就不是正规的方法,也就无所谓 BUG 了
真实的用户 ip 在 TCP/IP 数据包的最里层。不过 php 尚不具备读取他的能力

你可以用逗号进行explode。

你的需求如果要是对ip的真实性有很高的要求,不要使用HTTP_X_FORWARDED_FOR,因为这个字段是可以伪造的。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:SOAP webservice 通信问题다음 기사:301页面转向 php