PHP LDAP获取组的成员

时间:2017-01-04 08:06:10

标签: php ldap

是否可以在PHP中只获取LDAP组的成员?

我搜索了一下谷歌,但只找到了复杂的解决方案。我只需要这个名字而已。

$dn = "o=my_company, c=CH";
$filter="(|(sn=$person*)(vorname=$person*))";
$justthese = array( "ou", "sn", "vorname", "mail");

用户列在具有UID

的组中

我发现了类似的东西,却无法随心所欲。 希望你能帮助我,如果你需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:2)

根据评论中的其他信息,您无法在单个LDAP查询中执行此操作。

这是一个可能的解决方案的概述 - 我使用类似的东西来编写我写的LDAP邮件列表管理器。 (这是PHP 7语法。)

// Setup and run LDAP Search
$dn = "cn=groups,o=my_company,c=CH"; // Location of groups in directory
$attributes = ['members'];
$filter = sprintf("(groupName=%s)", $group_name);

$search = ldap_search($conn, $dn, $filter, $attributes);
$results = ldap_get_entries($conn, $search);

// Function to call on each member
$member_func = function($uid)
{
    // This is a helper that will get the user data and return an appropriate object (or string).
    // Implementation is left as an exercise to the user
    return get_user_details($uid);
};

// Need to filter LDAP results for actual values only
$member_data = array_map($member_func, array_filter($results['members'], function($k) { return is_numeric($k); }, ARRAY_FILTER_USE_KEY));