我正在开发一个 PHP 函数来获取活动目录用户的管理员(使用用户的电子邮件地址)。得到经理后,我想得到经理的电子邮件地址。
我使用此代码来获取经理:
//Search using a filter.
$result = ldap_search($connect,$ldaptree, "(mail=useremail@domain.de)") or die ("Error in search query: ".ldap_error($connect));
$data = ldap_get_entries($connect, $result);
// iterate over array and print data for each entry
echo '<h1>Show me the users</h1>';
for ($i=0; $i<$data["count"]; $i++) {
echo "Manager: " . print_r($data[$i]["manager"]) . "<br />";
该代码正在运行,并且在搜索用户电子邮件或其他属性时我得到了正确的值。但是当我搜索经理时,echo "Manager: " . print_r($data[$i]["manager"]) . "<br />";
我会得到经理的 DN(专有名称)。例如:“数组([count] => 1 [0] => CN=LASTNAME\, FIRSTNAME,OU=01_User,DC=int,DC=domain,DC=de)经理:1”
现在的问题是,当我尝试搜索经理的电子邮件地址时,使用 DN 作为过滤器
$result = ldap_search($connect,$ldaptree, "(DN=".$data[$i]["manager"]."") or die ("Error in search query: ".ldap_error($connect));
然后我得到一个“数组到字符串转换错误”。如果我使用 print_r($data[$i]) 转换为字符串,则会收到“搜索查询错误:搜索过滤器错误”。
所以我的问题是,如何使用DN来获取DN背后用户的属性?是否可以过滤 DN?我必须处理 DN 字符串吗?
希望可以有人帮帮我。谢谢!