我正在使用此功能获取我网站中用户的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);
}
非常感谢。
答案 0 :(得分:2)
通常只有echo $_SERVER['REMOTE_ADDR'];
才能完成这项工作。否则,请解释一下我们的意思,“它有时候无法读取ipaddress”
答案 1 :(得分:0)
IP地址不是禁止用户的可靠方式,因为它们可以使用代理,或者可以拥有动态IP。例如,对于某些用户而言,禁止IP只意味着他们必须重新启动路由器,他们才能再次访问您的网站。
根据您的网站,拒绝某人访问的更好方法是使用用户身份验证(用户登录)。
答案 2 :(得分:0)
简短的回答是,没有100%保证获取用户IP地址的方式 - $_SERVER['REMOTE_ADDR']
是您最好的选择,但即使这样也不是100%可靠 - 特别是对于网络上的用户。
从客户端通过HTTP传递的任何都可能被阻止/欺骗。
以相反的方式解决问题更容易 - 白名单访问更容易(也更安全)而不是将其列入黑名单 - 如果你可以这样做,我会去做。它只需要像简单的(在Apache .htaccess或vhost配置中):
Deny from all
Allow from mydomain.com
答案 3 :(得分:0)
您可以从环境中获得的唯一IP地址是REMOTE_ADDR
一个
代码中的其他愚蠢字符串不过是HTTP标头,可选的。可伪造,省略,格式错误,空白等。
我给你一个结论。