【发布时间】:2014-08-28 10:32:45
【问题描述】:
我不知道如何通过 objectid 字符串在 ldap 目录中搜索:
$string = 'S-0-1-23-4567890123-4567890123-456789012-3456'
$ds = ldap_connect('xxxx', xxx);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
$r = ldap_bind($ds, $bind_rdn, $bind_password);
$filter = "(objectSid=$string)";
$sr = ldap_search($ds, $dn, $filter);
$users = ldap_get_entries($ds, $sr);
然后我在某处读到你应该将它作为十六进制值传递: /00/00/....
$s = preg_replace('/../','\\\\$0',bin2hex($string));
但还是没有结果。如果我通过 objectSid=* ass 过滤器,我会得到所有结果,所以我知道查询正在工作:)。
谢谢!
【问题讨论】:
-
我在某处找到了一个piece of code,它将字节数组转换为 SID 字符串。如果您可以反转该过程,那么您很高兴(也请分享代码)。:) 此外,如果您可以选择,请使用 ObjectGUID 而不是 SID。 Here's why.
标签: php ldap hex data-conversion ldap-query