繁体   English   中英

如何获取客户端IP地址

[英]How To Get Client IP Address

我试图使用$_SERVER['REMOTE_ADDR']获取客户端浏览网站的IP地址,但我没有得到客户端的确切IP请帮助我...谢谢

$_SERVER['REMOTE_ADDR'] 

是你真正得到的最好的。

客户端可以发送各种其他标头( HTTP_FORWARDED_FOR等) - 请参阅此问题以获得完整的概述 - 但这些标题可由客户自由操作,并且被视为可靠。

//获取真正的客户端IP

function getIP() {
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
        $ip = getenv("HTTP_CLIENT_IP");
    } else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    } else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
        $ip = getenv("REMOTE_ADDR");
    } else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
        $ip = $_SERVER['REMOTE_ADDR'];
    } else {
        $ip = "unknown";
    }
    return($ip);
}

服务器看到的IP地址是客户端面向公众的IP地址。 如果他们在NAT路由器后面,他们的网络中将有不同的地址。

如果在客户端计算机上运行ipconfig (Windows)或ifconfig (Unix-y系统),您将获得其本地IP地址。 如果它在192.168.xx或10.xxx范围内,则它们位于NAT路由器后面,互联网将看到它们来自不同的地址。

如果用户在代理后面,您将获得代理的IP。 用户IP将是其中之一(您需要同时检查两者):$ _SERVER ['HTTP_CLIENT_IP'] $ _SERVER ['HTTP_X_FORWARDED_FOR']

如果设置了其中任何一个,那么用户就在代理之后(除非他伪造这些标题)并且您应该将它们用作源IP。 否则使用$ _SERVER ['REMOTE_ADDR']。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM