我正在尝试检索ldap上存在的所有用户的列表,以便在jquery中创建自动完成框。但是,我无法得到它。我可以连接并绑定到ldap服务器,然后我尝试使用ldap_list()
。我在过滤器中留下一个空白,不过滤任何东西,得到整个列表。但是ldap_list()
会设置一个警告(Search: Can't contact LDAP server
)并返回FALSE
,这会导致一切都出错,因为它是一个布尔值,并不是预期的(Warning: ldap_get_entries() expects parameter 2 to be resource, boolean given
)。以下是我的代码示例:
$identifier = ldap_connect(sfConfig::get('sf_ldap_host'));
if (!ldap_bind($identifier,
sfConfig::get('sf_ldap_generic_user').sfConfig::get('sf_ldap_usr_domain'),
sfConfig::get('sf_ldap_generic_password')))
{
throw new sfException('could not bind to the Active Directory');
}
$list = ldap_list($identifier, sfConfig::get('sf_ldap_dn'), '', array('mail'));
$list_user = ldap_get_entries($identifier, $list);
答案 0 :(得分:0)
namingContexts
的列表
sub
,(&)
或(objectClass=*)
的过滤器传输搜索请求,清楚地表达所需属性的列表。仅针对用户,请使用过滤器(objectClass=<object class in each user object>)
,例如(objectClass=person)
BIND设置的授权状态必须允许访问,并允许返回所请求的任意数量的对象。允许服务器限制返回给客户端的条目数,并限制评估LDAP操作所花费的秒数,在本例中为搜索。
请注意,正确配置的服务器可能不允许对目录进行拖网,因为它会在服务器上放置负载(这会影响其他客户端)。请考虑通知目录服务器管理员您的客户端计划列出所有用户。