Эта тема на forum.dklab.ru


billy_it:
прошу прощения... попытаюсь подробнее объяснить

небольшая сеть, сервер Win2003, и подключенные к нему компьютеры (клиенты :-) ), так же на сервере установлены Apache+MySQL+PHP под интранет портал (на PHP)... вот тут и задача в том что на PHP надо вытащить логин клиента (имя под которым он зашел в сеть), в одном из мануалов по PHP читал про переменную $USERNAME, мол он и дает имя клиента... но даже в денвере он дал мне логин админа
надеюсь понятно объяснил
Maus:
Выделено из темы «разница данных phpinfo в Denwer и Apache+MySQL+PHP»,
расположенной в форуме Форум для начинающих :: Денвер (26 Февраля 2006, 19:34).
Ksnk:
...подключенные к нему компьютеры (клиенты )...
Что понимается под "клиентом"? Имя компьютера?
...вытащить логин клиента (имя под которым он зашел в сеть), ...
Или тот логин, который юзер вводит в Windows?

Вообще говоря - никак, однако для локальной сети IP адрес компьютера можно узнать $_SERVER['REMOTE_ADDR'].
Затем, запустив утилиту PsLoggedOn из PsTools v2.3 for Windows можно узнать список залогиненых там юзеров.
Maus:
Ksnk
В Windows я не силён, но позволю себе сомневаться:
Event Type: Success Audit
Event Source: Security
Event Category: Logon/Logoff
Event ID: 538
Date: 22.02.2006
Time: 14:18:07
User: QW\archive_

Это взято из стандартного Security Log в WinXP (включено через gpedit, но это неважно). И юзер тут - это именно юзер, а не имя машины. То есть в Windows есть какие-то механизмы для этой задачи.
Ksnk:
MausТо есть в Windows есть какие-то механизмы для этой задачи.
А Вы полагаете, что рекомендуемый мной PsLoggedOn пользуется не функциями Windows? :) Или Вас смутило "имя компьютера\имя пользователя" в приведенном Вами логе? QW в этом случае, вероятнее всего домен, который хранит имена всех пользователей.
Пусть лучше уважаемый billy_it скажет что-же ему на самом деле нужно.
Maus:
Ksnk
угу, домен.
Пусть лучше уважаемый billy_it скажет что-же ему на самом деле нужно
Точнее, устроит ли сетевое имя машины или обязательно нужнологин клиента (имя под которым он зашел в сеть)
?

//offtop:
тему я назвал, похоже, неудачно. Есть лучшие варианты?
billy_it:
во-первых спасибо за то что отвечаете...
во-вторых, мне нужно получить не имя компьютера, а именно логин, под которым пользователь входит в систему... логин который прописан в Active Directory на сервере...
если конкретнее, то это мне нужно для того, чтобы пользователь сети не мог зарегистрироваться на интранет портале (написан на PHP) под произвольным логином, а только под тем, что он входит в систему (сеть), т.е. вытащить его сетевой логин
еще раз спасибо
bæv:
billy_it, да, запутали Вы тут всех...

Вам вот это нужно: http://php.rinet.ru/manual/ru/ref.ldap.php

Примеры реализации можно найти в интернете.
billy_it:
наверное я действительно не совсем удачно начал объяснение... попробую проще
пользователь локальной сети входит в сеть под своим логином, прописанным на сервере в AD (имя компьютера здесь совсем не причем)... можно ли средствами PHP вытащить его сетевой логин, под которым он залогинился?.. ну например когда он откроет страницу локального интранет портала показать логин, под которым он работает.... надеюсь на понимание...
bæv:
Вам вот это нужно: http://php.rinet.ru/manual/ru/ref.ldap.php
alexkunin:
Думаю, не ошибусь, если скажу, что собственно средставми PHP этого сделать нельзя. Можно сделать немного в обход: в PHP есть доступ к COM/COM+ со всеми вытекающими. А также есть модуль Win32api. Но в общем и целом решение все равно сведется к тому, что было приведено выше - определяем имя машины по адресу, а затем по машине вычисляем сидящего на ней юзера. А тут теоретически будет миллион проблем, потому что толком определить, кто там сидит, трудно: терминальные сессии, сетевые логины и т.д. (я знаю многих людей, которые пытались реализовать 100%-е узнавание, кто же на машине сидит, и обычно все заканчивалось написанием спец. сервиса, при этом 100%-я точность так и не была достигнута).

Вот может в вашей сети используется обязательный прокси с аутентификацией? Тогда можно из него инфу взять. Ну, и самым надежным определением было бы, наверное, использование NTLM-аутентификации на сервере. Первая попавшаяся ссылка в гугле: http://modntlm.sourceforge.net/ - ntlm-модуль для апача. Никогда не использовал, не знаю, как работает и насколько прозрачно для пользователя. Но вроде это оно, потому что делает, судя по всему, как раз то, что надо - каждый коннект к вебсерверу будет ассоциирован с пользователем из домена.

Эта тема на forum.dklab.ru