希望下面的代码可以帮助您使用 LDAP3 服务器循环遍历引用。我花了好长时间才弄清楚这个东西是怎么工作的,现在我已经成功地使用它来循环遍历几个子域。
特别感谢 Stig Venaas 帮助我入门。(最初的问题是 ldap_parse_reference 函数在 Windows 版本中丢失了。至少它现在可以在我提交错误报告后,在 Windows PHP 版本 5.1.0-DEV 及更高版本中工作了。)
function crawlRefs($user, $passw, $host, $dn, $port, $filter) {
// 创建用于获取引用的基本连接
$adConn = ldap_connect($host, $port) or die("系统无法连接!");
ldap_set_option($adConn, LDAP_OPT_PROTOCOL_VERSION, 3) or die ("系统无法进行第一个协议选项设置!");
ldap_set_option($adConn, LDAP_OPT_REFERRALS, 0) or die ("系统无法进行第二个协议选项设置!");
$bd = ldap_bind($adConn, $user, $passw) or die ("系统无法绑定连接!");
$search = ldap_search($adConn, $dn, $filter);
// 查找引用
$ref = ldap_first_reference($adConn, $search);
while ($ref) {
if (ldap_parse_reference($adConn, $ref, $referrals)) {
while ($referral = array_shift($referrals)) {
echo $referral . "<br>\n";
}
}
$ref = ldap_next_reference($adConn, $ref);
}