Уже бьюсь головой об стену, в общем ситуация такая.
На работе существует локальная сеть, с подсетями, очень крупная организация. Внутренние ip-шники раздаются по DHCP, как бы динамически, но какой у кого присвоится, такой и останется по сути, если не прерывать работу на пару месяцев.
1. В общем определились есть внутрення сеть, где каждому раздаётся локальный IP.
2. К нам окольными путями приходит интернет. Есть фаервол, через который всё проходит, ну и т.п. всю структуру описывать нет смысла. В общем вбивая в браузере http прокси и порт, а также предварительно прописав в админской части (по определённому ip через браузер) свой ip, появляется доступ в интернет. Т.е. как бы второй IP.
Получается что есть внутренеей ip и внешний-интеренетовский. Они различны.
У нас есть сервер где поднят web сервер, apache. Замутили сайт. Есть страничка, на которую попадая, пользователь должен увидеть сразу свой ВНУТРЕННИЙ ip. Горя нет, у кого не прописан прокси, т.е. у кого нет интернета, стандартный $_SERVER['REMOTE_ADDR'] работает. Но вот если есть инет и не прописано исключение, то всё идёт насмарку, выводится второй ip и всё тут. Всё перерыл по этому поводу, ничего не могу понять... думаю может что то в настройках самого сервера менять надо? В логах apache определяет кто ломился внутренне вроде как... HTTP_X_FORWARDED_FOR - не катит, всегда пишется unknown....
Вот в принципе вся суть вопроса... как заполучить внутренний IP.
Спустя 10 минут, 10 секунд (17.11.2010 - 17:03) Basili4 написал(а):
function GetRealIp()
{
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;
}
Спустя 9 минут, 9 секунд (17.11.2010 - 17:12) Guest написал(а):
Цитата (Basili4 @ 17.11.2010 - 14:03) |
function GetRealIp() { 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; } |
unknown - Вот результат который мне выдаётся после прохода этой фунции.
Т.е. идёт упор на HTTP_X_FORWARDED_FOR. Если честно я так ладу и не дам этому.... здесь возможно и кроется причина. Может эта штука как раз и отключена где то....
Спустя 3 минуты, 16 секунд (17.11.2010 - 17:16) Basili4 написал(а):
Guest
напиши print_r($_SERVER);
увидешь все что есть в $_SERVER может найдешь в этой структуре что тебе нужно.
напиши print_r($_SERVER);
увидешь все что есть в $_SERVER может найдешь в этой структуре что тебе нужно.
Спустя 16 часов, 26 минут, 3 секунды (18.11.2010 - 09:42) Guest написал(а):
Цитата (Basili4 @ 17.11.2010 - 14:16) |
Guest напиши print_r($_SERVER); увидешь все что есть в $_SERVER может найдешь в этой структуре что тебе нужно. |
не, ничего нет подходящего там... Нужно что то придумывать... Я уже думал организовать так, что бы пользователь на своей стороне запустил типа батника с командой ipconfig>log.txt. Ну что бы инфа прописалась и сохранилась в файл. Потом вытащить из этого файла ip и опубликовать... Но тут косяк, даже два косяка... Первое - чтобы запустить этот батник не заметно от юзера не получается, он должен дать согласие на выполнение этой команды. А второе - это то, что лог на сервере не пишется, а пишется хз где у юзера Короче херня какая то... крыша едет...
Спустя 23 минуты, 56 секунд (18.11.2010 - 10:06) Basili4 написал(а):
Guest
тагда в настройки прокси лезть походу она и HTTP_X_FORWARDED_FOR губит
тагда в настройки прокси лезть походу она и HTTP_X_FORWARDED_FOR губит