Php 检索所有ldap用户的列表

Php 检索所有ldap用户的列表,php,ldap,symfony-1.4,ldap-client,Php,Ldap,Symfony 1.4,Ldap Client,我试图检索ldap上存在的所有用户的列表,以便在jquery中创建一个自动完成框。然而,我没有设法得到它。我可以连接并绑定到ldap服务器,然后尝试使用ldap\u list()。我在过滤器中留了一个空白,不过滤任何内容并获取整个列表。但是ldap\u list()设置警告(Search:Can't contact ldap server)并返回FALSE,这会导致一切出错,因为它是一个布尔值,而不是预期的值(警告:ldap\u get\u entries()预期参数2是资源,给定的布尔值)。以

我试图检索ldap上存在的所有用户的列表,以便在jquery中创建一个自动完成框。然而,我没有设法得到它。我可以连接并绑定到ldap服务器,然后尝试使用
ldap\u list()
。我在过滤器中留了一个空白,不过滤任何内容并获取整个列表。但是
ldap\u list()
设置警告(
Search:Can't contact ldap server
)并返回
FALSE
,这会导致一切出错,因为它是一个布尔值,而不是预期的值(
警告:ldap\u get\u entries()预期参数2是资源,给定的布尔值
)。以下是我的代码示例:

$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);
  • 连接到服务器
  • 通过传输具有足够权限搜索DIT所有部分的DN的绑定请求来更改授权状态
  • 如果绑定成功,则从根DSE检索所有
    NamingContext
    的列表
  • 对于每个namingContext,使用namingContext的基本对象、
    sub
    的范围、
    (&)
    (objectClass=*)
    的过滤器发送搜索请求,并清楚地列出所需的属性。仅针对用户,使用过滤器
    (objectClass=)
    ,例如
    (objectClass=person)
  • 服务器响应中的每个搜索结果都包含与搜索参数匹配的对象
  • 绑定设置的授权状态必须允许访问,并允许返回请求的任意多个对象。允许服务器限制返回给客户机的条目数,还可以限制评估LDAP操作(在本例中为搜索)所花费的秒数

    请注意,正确配置的服务器可能不允许拖网目录,这是由于服务器上的负载(这将影响其他客户端)。考虑向目录服务器管理员通知您的客户计划列出所有用户。


    感谢您的编辑,我不太了解如何识别Hey@Terry Gardner,我无法通过使用(objectClass=*)获取所有用户,我通过使用(“dc=example,dc=com”)获取数据,但我需要所有用户数据,您能为我提供任何解决方案吗。