当ldap_search查询用户的电子邮件时,获取结果count = 0

时间:2017-04-29 19:50:15

标签: php ldap

我需要编写一个脚本来获取LDAP服务器中的一些用户信息。如果我不过滤任何东西,这很有效,但如果我将过滤器设置为某个特定用户,结果总是为0.我怀疑过滤字符串,但不确定。

以下是代码:

<?php

// using ldap bind
$ldaprdn  = 'uid=riemann,dc=example,dc=com';     // ldap rdn or dn
$ldappass = 'password';  // associated password

// connect to ldap server
$ldapconn = ldap_connect("ldap.forumsys.com")
    or die("Could not connect to LDAP server.");
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);


if ($ldapconn) {

    // binding to ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

    // verify binding
    if ($ldapbind) {
        echo "LDAP bind successful...";
    } else {
        echo "LDAP bind failed...";
    }

}

$attributes = array('mail');
$accountname = "*"; //fine if =*, 0 if set it = riemann
$filter_person = "(&(sAMAccountName={$accountname}))";
echo $filter_person;
$search = ldap_search($ldapconn,"DC=example,DC=com", $filter_person, $attributes);
$data = ldap_get_entries($ldapconn, $search);
print_r($data);
?>

1 个答案:

答案 0 :(得分:0)

我明白了。我设错$filter_person是错的。

应该是:

$filter_person = "uid={$accountname}";