Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: добавление/удаление записи в Active Directory
Форумы портала PHP.SU » PHP » Программирование на PHP » добавление/удаление записи в Active Directory

Страниц (1): [1]
 

1. USB_user - 29 Января, 2010 - 09:50:17 - перейти к сообщению
Подскажите, кому приходилось работать с Active Directory из PHP
Ситуация следующая:

Есть группа: CN=TEST-Restrict,OU=Group,DC=corporate,DC=portal
Есть пользователь (существует): CN=Test User,OU=Users,DC=corporate,DC=portal

Нужно добавить данного пользователя в эту группу.

Пишу код:

PHP:
скопировать код в буфер обмена
  1. $ad2 = ldap_connect("ldap://10.91.15.15") or false;
  2. $result2 = ldap_bind($ad2, $LDAP_USER_NAME."@".$DOMAIN_NAME, $PASSWORD);
  3. $info["member"] = "CN=Test User,OU=Users,DC=corporate,DC=portal";
  4. $r=ldap_add($ad2, "CN=TEST-Restrict,OU=Group,DC=corporate,DC=portal", $info);


В результате получаю ошибку:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: ldap_add() [function.ldap-add]: Add: Object class violation in /usr/local/www/work_ad.php on line 4

Что не правильно???
(Добавление)
Все на третий день путем проб и ошибок проблема решена.

Если кому интересно, то причины в следующем:

1. Для добавления атрибута необходимо использовать функцию
вместо
PHP:
скопировать код в буфер обмена


2. Выше в коде были строки для установки параметров протокола (без них не работает поиск):
PHP:
скопировать код в буфер обмена
  1. ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
  2. ldap_set_option($ad, LDAP_OPT_REFERRALS, 0);

если их закоментировать то запись добавляется нормально.

ВЫВОД: если в одном скрипте требуется использовать и поиск и добавление записей, то необходимо для каждой из операций использовать свой ldap_connect.
Окенчательный код выглядит так:
PHP:
скопировать код в буфер обмена
  1. $ad = ldap_connect("ldap://10.91.15.15") or false;
  2.                
  3. if ($ad) {
  4.   ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
  5.   ldap_set_option($ad, LDAP_OPT_REFERRALS, 0);
  6.   $result = @ldap_bind($ad, $LDAP_USER_NAME."@".$DOMAIN_NAME, $PASSWORD);
  7.   $returnVal = ($result) ? true : false;
  8. }
  9. else {
  10.   echo 'НЕУДАЧНОЕ СОЕДИНЕНИЕ С СЕРВЕРОМ<BR />';
  11. }
  12.        
  13. if ($returnVal) {
  14.   echo 'ПОДКЛЮЧЕНИЕ К ДЕРИКТОРИИ УCПЕШНО<BR />';
  15.        
  16.   // ДОБАВЛЕНИЕ/УДАЛЕНИЕ ЗАПИСИ
  17.   $ad2 = ldap_connect("ldap://10.91.15.15") or false;
  18.   $result2 = ldap_bind($ad2, $LDAP_USER_NAME."@".$DOMAIN_NAME, $PASSWORD);
  19.   $info["member"] = "CN=Test User,OU=Users,DC=corporate,DC=portal";
  20.   $r=ldap_mod_add($ad2, "CN=TEST-Restrict,OU=Group,DC=corporate,DC=portal", $info);
2. repon - 26 Сентября, 2012 - 12:41:12 - перейти к сообщению
пробую так же.. не выходит (

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $username="bdm@kimsar";
  5. $password="******";
  6.  
  7. $ad = ldap_connect('ldap://192.168.2.1') or false;
  8.                
  9. if ($ad) {
  10.         ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
  11.         ldap_set_option($ad, LDAP_OPT_REFERRALS, 0);
  12.         $result = ldap_bind($ad, $username, $password);
  13.         $returnVal = ($result) ? true : false;
  14. /////////проверяем
  15.         $resultsrh = ldap_search($ad, 'dc=kimsar', '(&(cn=test)(name=test))', array('name','cn','distinguishedname'));
  16.         $entries=ldap_get_entries($ad, $resultsrh);
  17.        
  18.         for($i=0;$i<count($entries);$i++)
  19.                 echo($entries[$i]['name'][0] .'<br>'.
  20.                         $entries[$i]['distinguishedname'][0].'<br>'.
  21.                         $entries[$i]['cn'][0].'<br>' );
  22. /////////проверяем
  23. }
  24. else {
  25.         echo 'НЕУДАЧНОЕ СОЕДИНЕНИЕ С СЕРВЕРОМ<BR/>';
  26. }
  27.        
  28. if ($returnVal) {
  29. echo 'ПОДКЛЮЧЕНИЕ 1 К ДЕРИКТОРИИ УCПЕШНО<BR/>';
  30.        
  31.  
  32.         $ad2=ldap_connect("ldap://192.168.2.1") or false;
  33.         $result2 = ldap_bind($ad2, $LDAP_USER_NAME, $password);
  34.        
  35.         //      $returnVal2=($result2) ? true : false;
  36.         //      if ($returnVal2)
  37.         //              echo 'ПОДКЛЮЧЕНИЕ 2 К ДЕРИКТОРИИ УCПЕШНО<BR/>';
  38.                
  39.         //как я понял - поля = параметры нового пользователя
  40.         $info["name"] = "test1";
  41.         $info["CN"] = "test1";
  42.         $info["distinguishedname"] = "CN=test1,CN=Users,DC=kimsar";
  43.        
  44.         //пробуем добавить
  45.         $r=ldap_add($ad2,"CN=test1,CN=Users,DC=kimsar",$info);
  46. }
  47.  
  48. ?>
  49.  


на выходе:
Цитата:

test
CN=test,CN=Users,DC=kimsar
test



ПОДКЛЮЧЕНИЕ 1 К ДЕРИКТОРИИ УCПЕШНО

Warning: ldap_add() [function.ldap-add]: Add: Operations error in X:\home\repon.ru\www\pdf\add.php on line 44
3. mugik - 26 Сентября, 2012 - 22:26:20 - перейти к сообщению
Цитата:
пробую так же.. не выходит (

ты че троллишь, тебе же написали:
4. repon - 27 Сентября, 2012 - 08:15:05 - перейти к сообщению
mugik пишет:
Цитата:
пробую так же.. не выходит (

ты че троллишь, тебе же написали:

так ldap_mod_add - для внесения изменений... (перенос существующего пользователя в существ. группу) а я нового пользователя пытаюсь добавить...
не правильно?
5. repon - 01 Октября, 2012 - 15:00:32 - перейти к сообщению
поможет кто-нибудь нового пользователя завести в AD?

 

Powered by ExBB FM 1.0 RC1