xmoonlight
@xmoonlight
https://sitecoder.blogspot.com

Определение IP-адреса. Какой выбрать?

Вот ситуация:
$_SERVER['HTTP_X_FORWARDED_FOR']: 111.111.111.111
$_SERVER['REMOTE_ADDR']: 222.222.222.222
Какой IP посетителя считать верным?
Если заголовков будет больше?
Есть ли единый правильный метод определения IP пользователя?
Спасибо.
  • Вопрос задан
  • 3456 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight Автор вопроса, куратор тега PHP
https://sitecoder.blogspot.com
Только так: $_SERVER['REMOTE_ADDR'];
т.к. все остальное - подделывается :(
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Melkij
@Melkij
PostgreSQL DBA
Какой IP посетителя считать верным?

Оба.

Есть ли единый правильный метод определения IP пользователя?

Логировать всё.

В общем случае - писать REMOTE_ADDR. Свои веб-сервера настраивать на выдачу REMOTE_ADDR в тот адрес, который открыл соединение до фронтенда.
Ответ написан
private function getUserIp(){
        if (!empty($_SERVER['HTTP_X_REAL_IP']))   //check ip from share internet
        {
            $ip=$_SERVER['HTTP_X_REAL_IP'];
        }
        elseif (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
        {
            $ip=$_SERVER['HTTP_CLIENT_IP'];
        }
        elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
        {
            $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
            $ip=$_SERVER['REMOTE_ADDR'];
        }
        return $ip;
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы