У меня есть веб-сайт с функцией анонимного комментирования. Пользователи могут сообщать друг другу о злоупотреблениях; флаги привязаны к IP-адресу (взяты через PHP из $_SERVER['REMOTE_ADDR']
).
Я заметил, что 99% флагов предназначены для пустого IP.
Я думаю о том, чтобы разместить сообщение о том, что «IP-адрес необходим для комментариев» и запретить пустые IP-адреса.
Меня не слишком беспокоит разбирающийся в компьютерах человек, который не является вредоносным, но просто хочет конфиденциальности. Они могут сами решить, ценят ли они конфиденциальность или возможность больше комментировать.
Меня беспокоит блокировка нетехнический и не злонамеренный пользователь, который не понимает, что у него нет IP-адреса, и поэтому сбивается с толку, когда не может комментировать. Есть ли сценарий, при котором это может произойти?
Правило №1 IP-сетей. У всех, кто общается по нему, есть IP. Вы можете замаскировать его через стороннего поставщика, но у вас все еще есть публичный IP-адрес. Никаких исключений. Интернет - это сеть на основе IP. Я подозреваю, что в вашем коде где-то есть плохая логика.
Также возможно, что эти переменные просто не возвращают ожидаемых результатов и поэтому пусты. Вы можете попробовать что-то вроде этого:
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