2010-09-15 65 views
2

我有以下代碼麻煩應該檢查是否$用戶處於AlumniDBusers或AlumniDBmanagers組AD麻煩用PHP LDAP代碼來檢查的memberOf某一組

的條目[0]數組總是返回空白

任何人都可以看到什麼可能是錯的?

感謝

// Active Directory server 
define('LDAP_HOST','dc1.college.school.edu'); 

// Active Directory DN 
define('LDAP_DN','OU=Alumni Relations,OU=Departments,DC=college,DC=school,DC=edu'); 

// Active Directory user group 
define('LDAP_USER_GROUP','AlumniDBusers'); 

// Active Directory manager group 
define('LDAP_MANAGER_GROUP','AlumniDBmanagers'); 

$ldap = ldap_connect(LDAP_HOST); 

echo "LDAP CONNECTED<br />"; 

if($bind = ldap_bind($ldap, $user, $password)) { 
    echo "PASS BIND<br />"; 

    $filter = "(samAccountName=" . $user . ")"; 
    $attrs = array("memberOf"); 
    $result = ldap_search($ldap, LDAP_DN, $filter, $attrs); 

    $entries = ldap_get_entries($ldap, $result); 

    echo "ENTRY RESULTS: "; 
    print_r($entries[0]['memberOf']); 
    echo "<br />"; 

    // see if member is in user or manager group 
    if (in_array(LDAP_USER_GROUP,$entries[0]['memberOf']) || in_array(LDAP_MANAGER_GROUP,$entries[0]['memberOf'])) 
    { 
    echo "IN GROUP"; 
    ldap_unbind($ldap); 
    } else { 
    echo "NOT IN GROUP"; 
    ldap_unbind($ldap); 
    } 

} else { 
    echo "FAIL BIND"; 
    ldap_unbind($ldap); 
} 
+0

帖子的功能ldap_get_entries($ LDAP,$結果);這可能是問題的所在 – 2010-09-15 20:06:09

+0

ldap_get_entries()是PHP – samJL 2010-09-16 18:46:55

+0

的標準函數,您的代碼剛剛幫助我解決了一個問題,謝謝! – Adi 2012-06-05 13:29:37

回答

0

link text PHP手冊

「當添加/編輯屬性用戶,記住了‘的memberOf’屬性是一種特殊情況。memberOf屬性不是用戶架構的可訪問屬性「。

+0

我不是想要添加或編輯用戶的屬性,只查詢他是什麼組的成員。據我可以從Google搜索中得知這一點是可能的 - 我一直在努力獲得有效的代碼。上面的代碼來自於在線文章,但有些內容肯定是錯誤的 – samJL 2010-09-16 18:47:56

1

得到它的工作,我的DN錯了 代碼是正確