Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Определение IP отправителя (https://forum.antichat.xyz/showthread.php?t=97075)

Qwazar 19.12.2008 17:55

Определение IP отправителя
 
Иногда натыкаюсь на подобные фугкции определения IP:
Код:

        if ($cip = getenv("HTTP_CLIENT_IP"))
                $ip = $cip;
        elseif ($cip = getenv("HTTP_X_FORWARDED_FOR"))
                $ip = $cip;
        elseif ($cip = getenv("REMOTE_ADDR"))
                $ip = $cip;
        else        $ip = "UNKNOWN";

Вопрос: Зачем делать именно так? В каких случаях HTTP_CLIENT_IP может быть неустановлен?

b3 19.12.2008 17:59

исправь
$_SERVER['REMOTE_ADDR']
и тд.

groundhog 19.12.2008 18:01

Каждая переменная как может быть установлена, так может быть и не установлена. Устанавливать её или нет определяет ПО на базе которого работает прокси-сервер, через который идёт запрос. Анонимные прокси не устанавливают значения других переменных, устанавливают только значение REMOTE_ADDR в свой адрес. Не анонимные проксики могут устанавливать все переменные, что свидетельствует о том, что запрос был послан через промежуточные прокси-сервера.

Qwazar 19.12.2008 18:02

Это всё ясно, меня конкретно инетерсует, в каких случаях (на каких конкретно серверах\системах), переменная окружения "HTTP_CLIENT_IP" будет неустановленной.

groundhog 19.12.2008 18:04

Qwazar, ну пойми - это определяется настройками, где будет "настроено" устанавливать эту переменную там и будет она установлена. Просто полагаться всецело на значение этой переменной нельзя, что и делает скрипт - проверяет задана эта переменная или нет и использует её значение или нет.

Qwazar 19.12.2008 18:07

Ок, ясно, в принципе на всех основных серверах она установлена по дефолту, но в принципе её можно и отключить. Как я понял.

Gifts 19.12.2008 23:31

Qwazar Как раз наоборот, заголовок HTTP_CLIENT_IP обычно не устанавливается. И следует помнить, что все заголовки HTTP_* можно подделать и использовать их для попытки найти реальный IP не следует.

.:EnoT:. 20.12.2008 00:01

Немного не в тему, но скажу что такие функции нужны, не знаю сколько на данный момент таких хостингов, но я 2 года назад сидел на одном хосте, где IP пользователя лежал в HTTP_X_FORWARDED_FOR, а REMOTE_ADDR был пуст...вот такие кривые настройки порой бывают)

ntldr 20.12.2008 08:10

настоящий ip адрес находится в переменной $_SERVER['REMOTE_ADDR'] а все остальные вариации можно подделать отправкой левых заголовков. Читал в какой-то статье.

.:EnoT:. 20.12.2008 11:54

Всё зависит от настроек сервера


Время: 13:11