我经营一个具有匿名评论功能的网站。用户可以举报他人的滥用行为;举报与 IP 地址绑定(通过 PHP 从 抓取$_SERVER['REMOTE_ADDR']
)。
我注意到 99% 的标志都是针对空白 IP 的。
我正在考虑发布一条消息“需要 IP 地址才能发表评论”并禁止使用空白 IP。
对于一个精通电脑、没有恶意、只是想要隐私的人来说,我并不太担心。他们可以自己决定是重视隐私还是重视评论能力。
我担心的是阻止非技术以及没有意识到自己没有 IP 地址的非恶意用户,因此在无法发表评论时感到困惑。 是否有可能发生这种情况的情况?
答案1
基于 IP 的网络规则 1。每个在其上通信的人都有一个 IP。您可以通过第三方伪装它,但您仍然拥有一个公共 IP。没有例外。互联网是一个基于 IP 的网络。我怀疑您的代码中某些地方存在一些错误的逻辑。
答案2
也有可能这些变量没有返回预期结果,因此是空白的。您可以尝试以下方法:
if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {
if ($_SERVER["HTTP_CLIENT_IP"]) {
$proxy = $_SERVER["HTTP_CLIENT_IP"];
} else {
$proxy = $_SERVER["REMOTE_ADDR"];
}
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
if ($_SERVER["HTTP_CLIENT_IP"]) {
$ip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$ip = $_SERVER["REMOTE_ADDR"];
}
}
echo "Your IP $ip<BR>\n";
if (isset($proxy)) {
echo "Your proxy IP is $proxy<BR>\n";
}
从 PHP 手册页中可以得知: http://www.php.net/manual/en/language.variables.predefined.php#31724