0
我的問題是,我有一個AD設置爲這樣:LDAP返回在不同的組中的所有用戶,AD與PHP
--root
--depot一個
--computers
--users
--depot乙
個--computers
--users
我目前正在開發的公司內部網,我需要得到所有在所有這些子目錄的用戶,讓周圍的人公司通過找人尋找他們。
問題是我的ldap_search目前沒有搜索子樹。因此目前只有根聯繫人正在返回。我的代碼如下:
$ldap_connection = ldap_connect($ldap_host, $ldap_port);
if (FALSE === $ldap_connection){
die("<p>Failed to connect to the LDAP server</p>");
}
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version');
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); // We need this for doing an LDAP search.
if (TRUE !== ldap_bind($ldap_connection, $ldap_username, $ldap_password)){
die('<p>Failed to bind to LDAP server.</p>');
}
//------------------------------------------------------------------------------
// Get a list of all Active Directory users.
//------------------------------------------------------------------------------
$ldap_base_dn = 'DC=yearsleygroup,DC=net';
$name= jo;
$search_filter = "(|(mail=*@belfield.co.uk)(mail=*@yearsley.co.uk)(mail=*@icepak.co.uk)(mail=*@luckyred.co.uk))";
$justthese = array("cn", "physicaldeliveryofficename", "telephonenumber", "mail");
$result = ldap_search($ldap_connection, $ldap_base_dn, $search_filter,$justthese);
$entries = ldap_get_entries($ldap_connection, $result);
沒有什麼會跳到我爲什麼會發生這種情況。我目前的設置是IIS上的PHP 5.3,後臺是AD。
如何返回這些不同OU的用戶,是執行單獨的ldap查詢然後連接結果然後搜索的唯一方法?
P.s. ldap新手,相對較新的PHP,但瞭解所有的基本概念。 歡迎任何幫助,如果我沒有正確地問,請指出。
喬
您使用的是adLDAP插件還是PHP的本機支持?我已經使用'adLDAP'超過4年了,並且非常確定它有一個簡單的__true/false__標記遞歸的文件夾結構支持。檢查這個:http://adldap.sourceforge.net/wiki/doku.php?id=documentation_folder_functions – DevlshOne
你有多少物品回來?你沒有達到(標準默認值)每個查詢限1000條記錄嗎?如果您有權訪問「Active Directory用戶和計算機」控制檯,請在那裏嘗試您的搜索查詢,看看會發生什麼。我發現你的代碼沒有明顯的問題,你似乎做得很對。另外,如果你計劃在AD中做更多的事情,你可以考慮使用一個庫,如[AD-X](https://github.com/Alaneor/AD-X)。然而,這可能不能解決這個問題... –
嗨,我會嘗試adLDAP謝謝你,也感謝你的極限我相信這是我的問題,最後一件事將是爲什麼AD返回電話號碼有時,但如果我改變了搜索參數,它有時不會有幫助,即使它只是一些主題? –