获取客户端ip代码如下:
function getClientIp() { if (!empty($_SERVER["HTTP_CLIENT_IP"])) $ip = $_SERVER["HTTP_CLIENT_IP"]; else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if (!empty($_SERVER["REMOTE_ADDR"])) $ip = $_SERVER["REMOTE_ADDR"]; else $ip = "error"; return $ip; }
但是通过火狐插件改变X_FORWARDED_FOR的值就获得ip为你改X_FORWARDED_FOR的值
请问如何在有代理的时候正确获取ip?
看你用途:
1.认为可信任的用户的ip,你那样的获取方式是可以的
2.用于防护,限制 等的ip ,直接用 $_SERVER["REMOTE_ADDR"] 就可以了
要获取客户端的IP地址,可以使用以下方法之一:
在Web服务器上,一般情况下可以通过HTTP请求头中的X-Forwarded-For头获取客户端的IP地址。如果X-Forwarded-For头不存在,则可以通过访问日志获取客户端IP地址。
在PHP中,可以使用$_SERVER['REMOTE_ADDR']获取客户端IP地址。但是,要注意的是,如果客户端使用了代理服务器,则该方法获取的IP地址可能是代理服务器的IP地址。
因此,建议使用以下代码获取客户端IP地址:
复制插入
复制插入
这段代码会先检查HTTP_CLIENT_IP和HTTP_X_FORWARDED_FOR头中是否存在IP地址,如果不存在再使用REMOTE_ADDR头中的IP地址。