为什么有时不能读取IP地址,这个功能

why cant read ip address sometimes, this function

本文关键字:地址 功能 IP 读取 不能 不能读 为什么      更新时间:2023-09-26

我使用这个函数来获取用户的ip地址在我的网站,但它不能读取ipaddress有时。我不知道用户是否可以隐藏ipaddress ?如果用户能够这样做,那么我如何获得ipaddress或任何其他解决方案来识别用户的本地计算机,以便我可以阻止该计算机打开我的网站。

如有任何建议,不胜感激。

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);
}

通常只有echo $_SERVER['REMOTE_ADDR'];应该做这项工作。否则,请解释一下"it cannot read ipaddress sometimes"是什么意思

Ip地址不是禁止用户的可靠方法,因为他们可以使用代理,或者可以使用动态Ip。例如,对一些用户来说,禁止IP只意味着他们必须重新启动路由器,他们可以再次访问你的网站。

根据您的站点,拒绝某人访问的更好方法是使用用户身份验证(用户登录)

简短的回答是没有100%保证获得用户IP地址的方法- $_SERVER['REMOTE_ADDR']是您最好的选择,但即使这样也不是100%可靠-特别是对于网络上的用户。

任何从客户端通过HTTP传递的内容都可能被阻止/欺骗。

用另一种方法解决你的问题更容易——将访问列入白名单比将其列入黑名单更容易(也更安全)——如果你能这样做,我会选择它。它只需要一些简单的东西(在Apache .htaccess或vhost配置中):

Deny from all
Allow from mydomain.com

您可以从环境中获得的唯一IP地址是REMOTE_ADDR
代码中其他愚蠢的字符串只不过是HTTP头,可选的。可以伪造,省略,格式错误,为空等

我留给你一个结论。