簡體   English   中英

為什么此LDAP查詢返回的數組只有0

[英]Why does this LDAP query return an array with just a 0

我是LDAP和Active Directory的新手。 我正在嘗試使用以下代碼來獲取經過身份驗證的用戶的電子郵件ID。 但是,當我運行它時,我得到的只是一個帶有0的數組。

這是代碼

$server ='ldaps://DOMAIN'; 
$username = 'DOMAIN\UID'; 
$password = 'PASSWORD';

$base_dn = 'dc=DOMAIN';
$search_filter = 'dn=UID'; 
$attributes = ['mail']; 

$ldap = ldap_connect($server);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap, $username, $password); 
$search = ldap_search($ldap, $base_dn, $search_filter, $attributes);
$data = ldap_get_entries($ldap, $search);

foreach($data as $dataPoint)
    {
        echo $dataPoint;
        echo "<hr>";
    }

這僅輸出0,並且在其下方有一條水平線。

這里最具挑戰性的是,沒有任何錯誤消息,並且我對LDAP和Active Directory不太熟悉。

關於為什么會發生這種情況的任何想法。

我從上面的代碼中看到了可能導致問題的幾件事:

  • 您真的要使用ldaps://嗎? 通常這不是您想要的。 如果要使用加密連接,則應使用ldap_start_tls,並且應在ldap_connect之后進行調用。 為了進行測試,我將其更改為ldap://
  • 您的$base_dn變量似乎缺少域的一部分。 那不應該是您域的NETBIOS名稱,而應該是完全合格的域名。 因此,如果您的域是domain.com則基本dn將為dc=domain,dc=com
  • 您的搜索過濾器( $search_filter$search_filter不正確。 如果您嘗試從給定帳戶名的LDAP中檢索用戶對象,則可以使用類似以下的搜索過濾器: (sAMAccountName=UID)

若要更好地了解可能出了什么問題,可以使用ldap_error並在連接后調用它: echo "Error: ".ldap_error($ldap); 您可以在任何與LDAP相關的調用之后執行此操作,以獲取有關可能出錯的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM