我遇到的问题是字符串$named2
将起作用字符串$named1
不会返回任何结果......
以下是我的例子:
$root_dn = "DC=na,DC=company,DC=net";
$named1 = "CN=Murray\, James,OU=Users,OU=USA,DC=na,DC=company,DC=net";
$named2 = "CN=empNum12345,OU=Users,OU=USA,DC=na,DC=company,DC=net";
$named_arr = explode("OU=",$named1,15);
$named_arr[0] = rtrim($named_arr[0], ',');
$ldap_query = $named_arr[0]; //CN=Murray\, James
if($connect_id) {
ldap_set_option($connect_id, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect_id, LDAP_OPT_REFERRALS, 0);
$bind = ldap_bind($connect_id, $LDAP_LGIN[$SERVER_ID], $LDAP_PASS[$SERVER_ID]);
$sr=ldap_search($connect_id, $LDAP_ROOT_DN[$SERVER_ID], $ldap_query);
$info = ldap_get_entries($connect_id, $sr);
$count = $info["count"];
$rs = ldap_flatresults($connect_id, $sr);
echo $rs;
}
有什么想法吗?
答案 0 :(得分:0)
似乎打破了你的搜索的是詹姆斯·默里的CN中逃脱的逗号。它被传递给ldap_seach
并且无法找到任何带有该搜索字符串的内容。
所以一个解决方案就是在将字符串传递给ldap_search
之前去掉反斜杠:
$ldap_query = str_replace('\\', '', $named_arr[0]);
替代方案(在我看来更简单)解决方案是使用您已有的DN并通过将ldap_search
替换为此来获取该DN的数据:
$sr = ldap_read($connect_id, $named1, "objectclass=*");
这应该会给你James Murray的所有属性。