Народ, есть такая проблема... Которую надобно решить. А именно: При помощи каких функций можно получить список пользователей на контроллере домена. Операционка в роле контроллера: Windows 2003
Ldap?! ... Точно? Я так понимаю что лдап это адаптивные протоколы! Послушай, если не трудно привиди примерчик! из лдапов... А SNMP...? МОжет через эти порты брать?
oODrAgoNOo SNMP совсем другое. Тебе нужен LDAP. вот просто кусок кода (метод класса) рабочего. он заводит нового юзера на сайте и сразу в домене. PHP: <? # вставить юзера в базу function Insert($l) { global $LDAP_SRV; global $LDAP_XRDN; global $LDAP_XPASS; $this->uid = $this->db->GetFreeID("OOPS_USERS"); $this->db->Query("INSERT INTO OOPS_USERS (ID,DISPLAYNAME,ENGNAME,ENGFAM,PREFIX,LOGIN,FIRST,LAST,AUTHTYPE,MAIL,STATUS) VALUES ('".$this->uid."','".$this->displayname."','".$this->engname."','".$this->engfam."','".$this->prefix."','".$l."',".time().",".time().",".$this->type.",'".$this->mail."',".STATUS_ONLINE.")"); $this->db->Query("INSERT INTO OOPS_USERS2GROUPS (GID,UID) VALUES ('6073da4az2bf8mte','".$this->uid."')"); $ldap_con=@ldap_connect($LDAP_SRV); if(!$ldap_con) { OOPSCrash(3001,array("LDAP Server" => $LDAP_SRV)); } ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap_con, LDAP_OPT_REFERRALS, 0); $ldap_bind=@ldap_bind($ldap_con,$LDAP_XRDN,$LDAP_XPASS); if(!$ldap_bind) { OOPSCrash(3002,array("LDAP RDN" => $LDAP_XRDN)); } $justthese = array("dn", "givenname","sn","mail"); $search_result=ldap_search($ldap_con,"DC=mydomain,DC=ru", "(&(objectCategory=Person)(objectClass=user)(sAMAccountName=".$l."))", $justthese); $info = ldap_get_entries($ldap_con, $search_result); $editdn = $info[0]["dn"]; $update["extensionattribute7"] = $this->uid; if(!@ldap_modify($ldap_con, $editdn, $update)) { OOPSCrash(3003,array_merge(array("LDAP RDN" => $LDAP_XRDN),$update)); } $TIT = "Создан новый LDAP пользователь"; $TEXT = ""; $TEXT .= "Имя : ".$this->displayname; $TEXT .= "\nЛогин : ".$l; $TEXT .= "\nПочта : ".$this->mail; OOPSMailNotify($TIT,$TEXT); OOPSSyslog(SYSLOG_USERS,"Автоматический импорт LDAP пользователя ".$this->displayname); } ?> а это проверка логина PHP: <? # проверить доступ через LDAP function LDAPLogin($l,$p,$uid="0") { global $LDAP_SRV; global $LDAP_RDN; global $LDAP_PASS; if($p == "") return LOGIN_P_ERROR; $USER = $l; $PASS = win_utf8($p); $ldap_con=@ldap_connect($LDAP_SRV); if(!$ldap_con) { OOPSCrash(3001,array("LDAP Server" => $LDAP_SRV)); } ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap_con, LDAP_OPT_REFERRALS, 0); $ldap_bind=@ldap_bind($ldap_con,$LDAP_RDN,$LDAP_PASS); if(!$ldap_bind) { OOPSCrash(3002,array("LDAP RDN" => $LDAP_RDN)); } $justthese = array("dn", "givenname","sn","mail"); $search_result=ldap_search($ldap_con,"DC=mydomain,DC=ru", "(&(objectCategory=Person)(objectClass=user)(sAMAccountName=".$USER."))", $justthese); $info = ldap_get_entries($ldap_con, $search_result); ldap_close($ldap_con); if(isset($info[0]["dn"])) $identify = $info[0]["dn"]; else return LOGIN_L_ERROR; if(strstr($info[0]["dn"],"OU=ex-workers")) { return LOGIN_L_ERROR; } $this->engname = $info[0]["givenname"][0]; $this->engfam = $info[0]["sn"][0]; $this->prefix = "PS"; $this->BuildDisplayName(); $this->type = USER_AUTH_LDAP; if(!empty($info[0]["mail"][0])) $this->mail = $info[0]["mail"][0]; else $this->mail = ""; $ldap_con=@ldap_connect($LDAP_SRV); if(!$ldap_con) { OOPSCrash(3001,array("LDAP Server" => $LDAP_SRV)); } ldap_set_option($ldap_con, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldap_con, LDAP_OPT_REFERRALS, 0); $ldap_bind=@ldap_bind($ldap_con,$identify,$PASS); if(!$ldap_bind) { return LOGIN_P_ERROR; } $this->uid = $uid; ldap_close($ldap_con); return LOGIN_OK; }?>
О великий и могучий Можит скинешь такой классик Я пока в пхп не то что не программист, но и не чайник Учимся
oODrAgoNOo как такового класса работы с AD нет, т.к. есть просто PHP функции доступа к нему через ldap_. классы из которых я это выдернул просто обращаются к AD. япривел тебе куски кода что б ты имел представление как все работает. остальное напиши сам.
Блин спасибо! Я на дух не перенашу прогарммирование под ОС... А мне тут еще и хелп МС пихают! Да такого быть не может! Что бы про лдап инфы для php не было
Тгда получается что ты до кучи еще знаешь и СИ++... Ну или VS... Или нет?! Коль нет то скажи какой MSDN... Буду смотреть
oODrAgoNOo LDAP это протокол. Надо поискать доку по нему и почитать. есть примеры в пхп. что еще-то надо? не пойму? ты начни делать. будут вопросы - пиши, а так херня получается ... p.s. да. я еще пищу на C/C+, Dephi и многом другом ... но это к делу то же не относится
oODrAgoNOo нет. примеры в использовании ldap_* к примеру: http://ru.php.net/manual/ru/function.ldap-bind.php
Здравствуйте. При выполнении функции ldap_search() выходит ошибка "Search: Operations error in .... " "My Company" заменяю на то название, которое мне сообщили администраторы компании. Соединяюсь по VPN-туннелю. Неужели и здесь проблема из-за VPN? Код (Text): $sr=ldap_search($ds, "o=My Company, c=RU", "sn=S*"); Я так понимаю, что ошибка связана с указанными параметра. Но пока не могу решить эту проблему Не подскажите, в чём здесь проблема?
Всё разобрался. Я связывался с LDAP-директорией анонимно, поэтому ничего и не было. После того как мне выдали логин и пароль в домене компании и я их прописал в ldap_bind всё заработало (получил какой-то список). Сейчас буду разбирать полученные данные.