首先,PHP中有三种获取用户IP的方法。虽然这三种都是用$_SERVER来获取,但是他们三个的含义不一样。
有时候,我们站点使用了CDN,会发现评论用户的IP好多一样,第一感觉是被人刷评论了。但是仔细一看,内容毫无广告痕迹。这时候,就应该是获取IP的姿势问题了。
下面宇润简单介绍一下PHP中三种获取用户IP的方法的不同之处。
$_SERVER['REMOTE_ADDR']
客户端IP,真实的不可伪造的,和服务器直连的客户端IP。
如果用户使用代理IP,则是代理IP。
如果站点开启了CDN或反向代理,则是CDN节点IP。
$_SERVER['HTTP_CLIENT_IP']
代理IP通过header头发送给服务器的用户IP,可伪造。
如果用户使用匿名代理IP,则获取不到值,反之则有值。
$_SERVER['HTTP_X_FORWARDED_FOR']
如果站点开启了CDN或反向代理,则是用户的真实IP。其实也是可伪造的,但一般可以信任。
$_SERVER['REMOTE_ADDR'] 这是和服务器直接连接的IP地址,不可以伪造的