我需要编写一个脚本来获取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);
?>
答案 0 :(得分:0)
我明白了。我设错$filter_person
是错的。
应该是:
$filter_person = "uid={$accountname}";