![]() |
Определение IP отправителя
Иногда натыкаюсь на подобные фугкции определения IP:
Код:
if ($cip = getenv("HTTP_CLIENT_IP")) |
исправь
$_SERVER['REMOTE_ADDR'] и тд. |
Каждая переменная как может быть установлена, так может быть и не установлена. Устанавливать её или нет определяет ПО на базе которого работает прокси-сервер, через который идёт запрос. Анонимные прокси не устанавливают значения других переменных, устанавливают только значение REMOTE_ADDR в свой адрес. Не анонимные проксики могут устанавливать все переменные, что свидетельствует о том, что запрос был послан через промежуточные прокси-сервера.
|
Это всё ясно, меня конкретно инетерсует, в каких случаях (на каких конкретно серверах\системах), переменная окружения "HTTP_CLIENT_IP" будет неустановленной.
|
Qwazar, ну пойми - это определяется настройками, где будет "настроено" устанавливать эту переменную там и будет она установлена. Просто полагаться всецело на значение этой переменной нельзя, что и делает скрипт - проверяет задана эта переменная или нет и использует её значение или нет.
|
Ок, ясно, в принципе на всех основных серверах она установлена по дефолту, но в принципе её можно и отключить. Как я понял.
|
Qwazar Как раз наоборот, заголовок HTTP_CLIENT_IP обычно не устанавливается. И следует помнить, что все заголовки HTTP_* можно подделать и использовать их для попытки найти реальный IP не следует.
|
Немного не в тему, но скажу что такие функции нужны, не знаю сколько на данный момент таких хостингов, но я 2 года назад сидел на одном хосте, где IP пользователя лежал в HTTP_X_FORWARDED_FOR, а REMOTE_ADDR был пуст...вот такие кривые настройки порой бывают)
|
настоящий ip адрес находится в переменной $_SERVER['REMOTE_ADDR'] а все остальные вариации можно подделать отправкой левых заголовков. Читал в какой-то статье.
|
Всё зависит от настроек сервера
|
| Время: 13:11 |