Определение REMOTE_ADDR через прокси @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 11 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
SPiRiT
новый человек
0
Сообщения: 19
Зарегистрирован: 01.10.02
Откуда: Москва
Заголовок сообщения: Определение REMOTE_ADDR через прокси
Сообщение Добавлено: 26 Август 2003, 09:55:05 
Вот делаю сейчас интранет-сайт в одном банке на PHP, ну и, конечно, руководство хочет, чтобы некоторые действия посетителей отслеживались. Т.е., к примеру, пишет человек на доске объявлений: "Все уволены. Ваш директор.", а я посмотрю в базе данных, кто это у нас такой шутник и пожурю его по телефону...
А вопросы вот в чем:

1. Посетителя я определяю по IP при помощи
Код:
getenv('REMOTE_ADDR')

Но т.к. сайт в локальной сети, возникают проблемы: у некоторых пользователей в настройках браузера стоит "Не использовать прокси для локальных адресов" - с ними все ОК, а вот у кого не стоит - те, получается, вместо своего IP выдают мне адрес прокси. И если один такой умник проголосует в каком-нибудь опросе, то другой такой уже не сможет - ведь с этого IP-адреса уже голосовали.…
Вот я и пытаюсь как-нибудь получить IP посетителя, прошедшего через прокси (MS ISA). Может, кто знает?

2. Для построения статитстики посещений я использую AWStats (кстати, замечательная вещь, советую). Чтобы уж совсем все было красиво в отчетах, я немного этот скрипт попроавил, чтобы вместо IP-шников посетителей он писал имена пользователей, залогиненных на этом адресе. Для определения я использую стандартную программку nbtstat:
Код:
nbtstat -a 111.222.333.444

в ответ она выводит на экран всякий служебный мусор, из которго я выковыриваю логин пользователя. Но спсоб этот не очень красивый и к тому же не всегда срабатывает. Может быть, кто-то уже сталкивался с такой проблемой? Как бы это усоврешенствовать?

Кстати, если кто-нибудь занимется подобными проектами, я могу поделиться вскими интересностями, которые уже написал своим потом и кровью :laugh:
К примеру, научился отображать содержимое public folders (тех, что в outlook'e) на PHP-сайте...[/b][/code][/i]
Skeeve
соучастник
0
Сообщения: 349
Зарегистрирован: 26.07.03
Откуда: Bazaar
Сообщение Добавлено: 26 Август 2003, 10:32:50 
SPiRiT,
по прокси нечего сказать.

А вот про public folders хотелось бы узнать :gent:
SPiRiT
новый человек
0
Сообщения: 19
Зарегистрирован: 01.10.02
Откуда: Москва
Сообщение Добавлено: 26 Август 2003, 11:54:14 
Skeeve, если в двух словах, то я сначала порылся на MSDN и написал VBScript, который выводит на экран содержимое общих папок + всякую служебную информацию для PHP-скрипта. В общем-то вся соль как раз в этом VB-скрипте.
А потом я его вызываю их PHP при помощи функции popen, т.е. то, что он должен выводить на экран, я как бы читаю из файла. Собснно и все. Есть, кончено, мелкие подводные камни, вроде перекодировки, переполнения буфера, но суть работы именно такая. Остается это оформить, сделать постраничный вывод и поиск...
А если тебя интересуют исходники, скажи - кину.
Skeeve
соучастник
0
Сообщения: 349
Зарегистрирован: 26.07.03
Откуда: Bazaar
Сообщение Добавлено: 26 Август 2003, 12:03:20 
А как VBScript открывает, там какая-то встроенная функция видимо есть?
Если есть линк на msdn по этой теме, буду благодарен.
С момента как PHP получает данные, всё как бы понятно. А вот работа с файлами Outlook интересна.
SPiRiT
новый человек
0
Сообщения: 19
Зарегистрирован: 01.10.02
Откуда: Москва
Сообщение Добавлено: 26 Август 2003, 12:14:53 
Вот основной фрагмент (не хочу забивать форум):
Код:
….
   strProfileInfo = strServer & vblf & strMailbox
   Set objSession = CreateObject("MAPI.Session")

   objSession.Logon "Работа с MS Exchange", , , False, , True
   
   
   Set objInfoStores = objSession.InfoStores
   For i = 1 To objInfoStores.Count
    If objInfoStores.Item(i)= "Общие папки" Then
       Set objInfoStore=objInfoStores.Item(i)
       Exit For
    End If
   Next

   bstrPublicRootID = objInfoStore.Fields.Item( &H66310102 ).Value
   Set objTopFolder = objSession.GetFolder(bstrPublicRootID, objInfoStore.ID)
….


Отталкивался я от этого ASP-шного примера: http://support.microsoft.com/?kbid=179332
Skeeve
соучастник
0
Сообщения: 349
Зарегистрирован: 26.07.03
Откуда: Bazaar
Сообщение Добавлено: 26 Август 2003, 12:19:39 
Спасибо. :beer:
<sergio.ga>
новый человек
0
Сообщения: 102
Зарегистрирован: 13.06.03
Откуда: Харьков, Украина
Заголовок сообщения: Re: Определение REMOTE_ADDR через прокси
Сообщение Добавлено: 27 Август 2003, 16:25:53 

SPiRiT писал(а):
1. Посетителя я определяю по IP при помощи
Код:
getenv('REMOTE_ADDR')

Но т.к. сайт в локальной сети, возникают проблемы: у некоторых пользователей в настройках браузера стоит "Не использовать прокси для локальных адресов" - с ними все ОК, а вот у кого не стоит - те, получается, вместо своего IP выдают мне адрес прокси. И если один такой умник проголосует в каком-нибудь опросе, то другой такой уже не сможет - ведь с этого IP-адреса уже голосовали.…
Вот я и пытаюсь как-нибудь получить IP посетителя, прошедшего через прокси (MS ISA). Может, кто знает?


Попробуй HTTP_X_FORWARDED_FOR.
Если она установлена, то реальный IP должен содержаться в ней.
SPiRiT
новый человек
0
Сообщения: 19
Зарегистрирован: 01.10.02
Откуда: Москва
Сообщение Добавлено: 29 Август 2003, 13:45:58 
Не-а, HTTP_X_FORWARDED_FOR не установлена. Я первым делом выполнил phpinfo() и посмотрел все переменные.
Protoss
соучастник
0
Сообщения: 544
Зарегистрирован: 15.05.02
Откуда: Moscow
Сообщение Добавлено: 29 Август 2003, 14:33:24 
бред тут был . точней не бред - но не всё так там просто ……..

_________________
I'm SOLDIER
Acid~Jazz Муж.
соучастник
1
Сообщения: 740
Зарегистрирован: 12.04.03
Откуда: Зеленоград
Сообщение Добавлено: 29 Август 2003, 18:40:05 
вообще говоря, строго по топику посоветовать нечего.

однако, лично мне кажется неправильной сама идея идентифицировать людей по айпишникам их рабочих станций, тем более в системе, предполагающей разделение прав. небезопасно, imho.

_________________
начинающий менеджер . http://acidjazz.photosight.ru/
gregzem Муж.
новый человек
2
Сообщения: 252
Зарегистрирован: 29.04.03
Сообщение Добавлено: 1 Сентябрь 2003, 12:19:37 
А если так ?

Код:
function content_GetRemoteIP(&$proxy) {

if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {
   if ($_SERVER["HTTP_CLIENT_IP"]) {
      $proxy = $_SERVER["HTTP_CLIENT_IP"];
   } else {
      $proxy = $_SERVER["REMOTE_ADDR"];
   }
   $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
   if ($_SERVER["HTTP_CLIENT_IP"]) {
      $ip = $_SERVER["HTTP_CLIENT_IP"];
   } else {
      $ip = $_SERVER["REMOTE_ADDR"];
   }
}

return $ip;
}

*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 11 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100