За последние 24 часа нас посетили 22566 программистов и 1208 роботов. Сейчас ищут 738 программистов ...

ldap_search. Не могу сделать составной фильтр.

Тема в разделе "PHP для новичков", создана пользователем hackwell, 3 фев 2023.

  1. hackwell

    hackwell Новичок

    С нами с:
    3 фев 2023
    Сообщения:
    3
    Симпатии:
    0
    Добрый день.
    Я не прогер, но порой приходится кодить.

    Задача - отбор из АД пользователей, входящих в группу.
    С этим справился.
    НО. при этой, пользователи должны быть Активными.
    Для отбора активных нашел фильтр -
    Код (Text):
    1. (!(userAccountControl:1.2.840.113556.1.4.803:=2))
    .
    Он рабочий. Но соединить этот фильтр с фильтром вхожждения в группу не получается.
    Помогите.
    По идее, рабочий вариант такой:
    Код (Text):
    1. $search_filter_vpn_guest = '(&(!(userAccountControl:1.2.840.113556.1.4.803:=2))(objectClass=group)(cn=VPN))';
    не работает. Пробовал различные варианты скобок и вложенные (&( &() )), не работает.
     
  2. hackwell

    hackwell Новичок

    С нами с:
    3 фев 2023
    Сообщения:
    3
    Симпатии:
    0
    Апну.. Коллеги, никто не может помочь?
     
  3. hackwell

    hackwell Новичок

    С нами с:
    3 фев 2023
    Сообщения:
    3
    Симпатии:
    0
    Апну(2)
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Не надо бессмысленных сообщений. От этого спецы по LDAP не набегут. И не забывайте, что тут никто ничего для вас делать не обязан.
    --- Добавлено ---
    А вообще, давно бы разместили заказ на какой-нибудь фриланс бирже :) Можно и у нас.
     
  5. lamac0

    lamac0 Новичок

    С нами с:
    4 авг 2022
    Сообщения:
    42
    Симпатии:
    0
    есть один образец, может подтолкнет к чему-нибудь
    PHP:
    1. $ldapconn = ldap_connect("ldap.example.com") or die("Could not connect to LDAP server.");
    2. ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
    3. ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
    4.  
    5. $ldapbind = ldap_bind($ldapconn, "почта", "пароль");
    6.  
    7. $group = "имя_группы";
    8. $basedn = "OU=путь_к_группе,DC=domain,DC=com";
    9.  
    10. $filter = "(&(objectClass=user)(memberOf=CN=$group,$basedn)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))";
    11. $attributes = array("cn", "имя_аккаунта", "почта");
    12.  
    13. $search = ldap_search($ldapconn, $basedn, $filter, $attributes);
    14. $info = ldap_get_entries($ldapconn, $search);
    15.  
    16. for ($i = 0; $i < $info["count"]; $i++) {
    17.     echo "Имя: " . $info[$i]["cn"][0] . "<br>";
    18.     echo "Никнейм: " . $info[$i]["имя_аккаунта"][0] . "<br>";
    19.     echo "Email: " . $info[$i]["почта"][0] . "<br><br>";
    20. }
    21.  
    22. ldap_unbind($ldapconn);