Всю жизнь определял IP при помощи переменной окружения, и всегда это работало:
echo $_SERVER['REMOTE_ADDR'];
Тут недавно столкнулся с ситуацией, когда вдруг: $_SERVER['REMOTE_ADDR'], Ipconfig в командной строке и 2ip.ru показали мне 3 разных айпишника. Раньше показывали всегда один и тот же, сейчас корректно показывает только 2ip.ru, остальные - адреса каких-то промежуточных прокси, причем разные. И не у меня одного такая ситуация.
Нагуглил на SO функцию:
function get_ip()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
Возвращает корректный IP, но тут же комментарий, что нельзя пользоваться данными из HTTP заголовков, это небезопасно.
Поэтому пара вопросов:
1) Я правильно понимаю, что Чебурнет уже совсем близко, навтыкли каких-то промежуточных прокси-серверов, что даже айпишник стало нормально не определить.
2) Ну и, собственно, как теперь все-таки правильно определять IP.