2017-01-04 70 views
0

PHPでLDAPグループのメンバーだけを取得できますか?PHP LDAPグループのメンバーを取得

私はgoogleを少し検索しましたが、複雑なソリューションしか見つかりませんでした。私はちょうど名前と何も必要としない。

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

ユーザーが、私はこのような何かを見つけたが、これでどこに行くことができないUID

を持つグループにリストされています。 あなたが私を助けることができ、より多くの情報が必要な場合

+0

これは、LDAPスキーマに大きく左右される可能性があります。グループにメンバーが含まれているか、各メンバーに 'memberOf'属性がありますか? – yakatz

+0

グループにメンバーがあり、ユーザーは 'memberOf'属性を持っていません – Damon

+0

' uid'、 'dn'、' mail'などでメンバーがリストされていますか?また、これはどこかカスタムからの標準的なスキーマですか? – yakatz

答えて

1

コメントの追加情報に基づいて、単一の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)); 
+0

'$ attributes = .... 'という行に構文エラーがあります – Damon

+0

角括弧' [] 'を意味していますか?その構文はPHP 5.4で導入されました。とにかく、これは一般的な概要と同じように、コピーアンドペーストされることは決してありませんでした。 – yakatz

関連する問題