2012-02-02 26 views
0

我試圖從我的活動目錄中檢索信息(descriptionand Mail),但不知道我的DN是否已登錄到使用其域的應用程序中的所有用戶證書,我只能夠檢索信息,如果我提供的DN每個DN是非常不同的部門和組織單位的所有用戶的原因,綁定工作正常的問題是隻檢索上面指定的數據。使用ldap從AD中檢索屬性搜索或不知道Distingushed名稱時的閱讀

我的代碼如下: 注意:我已經更改了某些字段的值。

<?php 
ldap_authenticate(); 
function ldap_authenticate() { 

//using ldap bind 
$ldaprdn = 'username';//ldap rdn or dn 
$ldappass = 'password';// associated password 
$filter="(&(objectClass=user))"; 
$justthese = array("sn","displayName"); 
//connect to ldap server 
$ldapconn = ldap_connect("hostname.net"); 

if ($ldapconn){ 
    //binding to ldap server 
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass); 
    //verify binding 
    if($ldapbind){ 
     $dn='CN=Donald Mailula,OU=Users,OU=Group Testing,OU=Central Office,DC=hostname,DC=net'; 
     $sr=ldap_read($ldapconn,$dn,$filter); 
     $entry = ldap_get_entries($ldapconn, $sr); 
     echo $entry[0]["mail"][0] . " is the email address of the cn your requested<br/>"; 
     echo $entry[0]["description"][0]; 
    }else{ 
     echo "LDAP bind failed..."; 
    } 
    } 
} 

?> 

我的主要問題是,我將無法知道所有誰登錄的,所以我需要一種方法來搜索記錄沒有DN,還是怎麼着用戶的DN首先獲得dn,然後搜索我需要的記錄。

這是甚至可能的傢伙?

請幫

感謝 d

+0

嘿,我已經得到了一模一樣的問題。你是否使用接受的答案來工作?如果是的話,你的搜索標準最終會變成什麼樣子? – Paul 2014-10-31 11:43:37

回答

3

你需要的是所謂的事情ldap_search你可以找到一個完整的樣本here

<?php 
// $ds is a valid connexion id (samAccountName) 
$dn = "o=Ma Compagnie, c=FR"; 
$filter="(|(objectCategory=person)(samAccountName=$ds))"; 
$justtheseattributes = array("ou", "sn", "givenname", "mail"); 
$sr=ldap_search($ds, $dn, $filter, $justtheseattributes); 
$info = ldap_get_entries($ds, $sr); 
echo $info["count"]." found entries.\n"; 
?>