2011-10-27 67 views
4

我知道如何使用搜索進行身份驗證的LDAP綁定,但是如果我想要全名的所有條目,我該怎麼辦......那麼我怎樣才能獲得所有人的全名或電子郵件?我如何獲得所有LDAP條目?

下面我使用LDAP綁定進行身份驗證,我可以搜索一個人,但是如果我想要他們全部?

<?php 

// using ldap bind 
$ldaprdn = 'uname';  // ldap rdn or dn 
$ldappass = 'password'; // associated password 

// connect to ldap server 
$ldapconn = ldap_connect("ldap.example.com") 
    or die("Could not connect to LDAP server."); 

if ($ldapconn) { 

    // binding to ldap server 
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass); 

    // verify binding 
    if ($ldapbind) { 
     echo "LDAP bind successful..."; 
    } else { 
     echo "LDAP bind failed..."; 
    } 

} 

?> 

這是一些MySQL的代碼我有填充HTML列表:

<ol>  

<?php 
mysql_connect("kool", "ohjoa", "sampa") or die(mysql_error()); 
mysql_select_db("DBtest") or die(mysql_error()); 

$query = "SELECT * FROM EditOnCall"; 

$result = mysql_query($query) or die(mysql_error()); 


while($row = mysql_fetch_array($result)){ 
    echo "<li>".$row['Email']."</li>"; 
    echo "<br />"; 
} 


?> 

</ol> 

現在這顯示郵件的HTML列表。我想要做的與LDAP相同,除了在目錄中顯示所有LDAP用戶的全名...我的LDAP只有200人在其中,所以它不太大。

任何想法?

回答

7

綁定是一種類型的LDAP請求,搜索是另一種類型的請求。綁定建立連接的身份驗證狀態,並且搜索使用基礎對象,範圍,過濾器和其他可選參數來構建過濾並返回給LDAP客戶端的條目的候選列表。連接的身份驗證狀態還將建立某些訪問功能,例如可以檢索哪些條目,可以在搜索中檢索多少條目,在搜索上花費多少時間,在實現過程中應檢查多少條目搜索請求和其他功能。如果不使用根DN,則可能無法檢索目錄中的所有條目,並且LDAP管理員可能會禁止非根DN認證狀態檢索多個條目。有關搜索的更多信息,請參閱「LDAP: Using ldapsearch」。有關使用LDAP進行編程的更多一般信息,請參閱"LDAP: Programming Practices"。有關更多詳細信息,請參閱LDAP Search Best Practices

關於過濾器,星號不是通配符(cn=*)。這被稱爲存在過濾器,並指示在過濾候選列表時,斷言中使用的屬性(本例中爲cn)是否存在於條目中。星號可以用作子串過濾器的一部分,例如,(cn=abc*)([email protected]*)

在任何情況下,應儘可能避免在大型目錄中使用子字符串過濾器,因爲這可能會「拖網」目錄。

4

這不是關於你如何綁定,而是關於你如何搜索。您需要了解LDAP filters(此鏈接與AD有關,但其中的所有信息均可應用於任何LDAP節點)。

您可以在LDAP過濾器中使用*作爲通配符。假設你想獲得它們通過屬性cn從名爲cn=Users根容器標識的的objectClass=User所有對象 - 你可以這樣做:

$searchResult = ldap_search($ldapconn,'cn=Users','(&(objectClass=User)(cn=*))',array('cn','guid')); 

,綁定可以影響這一原則的辦法是,如果只有這樣,您用來綁定的用戶沒有權限訪問您在目錄中查找的對象。

如果您顯示了更多代碼,請確認您正在嘗試做什麼,然後我將編輯此答案並提供更多詳細信息。

+0

我增加了更多關於我想要做的事情的細節...... – Bulvak

+0

@Nadal我們需要知道的是a)包含目錄中所有人的對象的DN是什麼b)可以用來標識所需對象的東西,以及沒有任何對象, t想要(像'objectClass = Person')和c)你想要的屬性的名字 – DaveRandom

+0

a)DN是ou = People,DC = sde,DC = kozwin,DC = com b)真的不知道這是什麼是 三)我想人的姓名和電話號碼 這就賦予我的LDAP用戶的LDAP用戶名和全名進入會議 \t $ _SESSION [「用戶名」] = $的用戶名; $ _SESSION ['fullname'] = $ info [0] [cn] [0]; 我也想要電話號碼,但不知道是哪一個取電話號碼 – Bulvak