PHP LDAP搜索

PHP LDAP搜索,php,ldap,windows-server-2003,Php,Ldap,Windows Server 2003,我有一个测试环境,包括两个Windows2003服务器,一个运行IIS6.0和PHP5.2,另一个是域控制器。我正在尝试获取一个php脚本来使用LDAP查找服务器上的所有用户 域为openDesk.local,用户和默认OU用户 到目前为止,我能够连接并绑定到域控制器,我只是无法搜索它,我有大约1个小时的LDAP经验,因此我相当确定这是一个简单的语法错误,当我运行此代码时,我得到“搜索失败” 虽然这并不能直接回答您的问题,但当我在另一个有生之年从事LDAP工作时,我发现拥有LDAP浏览器在查询

我有一个测试环境,包括两个Windows2003服务器,一个运行IIS6.0和PHP5.2,另一个是域控制器。我正在尝试获取一个php脚本来使用LDAP查找服务器上的所有用户

域为openDesk.local,用户和默认OU用户

到目前为止,我能够连接并绑定到域控制器,我只是无法搜索它,我有大约1个小时的LDAP经验,因此我相当确定这是一个简单的语法错误,当我运行此代码时,我得到“搜索失败”



虽然这并不能直接回答您的问题,但当我在另一个有生之年从事LDAP工作时,我发现拥有LDAP浏览器在查询语法方面绝对是无价的。我用过。一旦可以看到路径,语法就不再是问题了。

LDAP查询应该用括号括起来。您可能还希望在不使用通配符的情况下搜索属性。类似“(objectClass=user)”的东西可以用作过滤器


您可以在此处阅读有关广告搜索语法的更多信息:

谢谢您提供的信息,我会告诉您您可能还对Apache Directory Studio(基于Eclipse,免费)感兴趣:感谢您看到路径使语法变得非常简单!问题是用户是CN,而过滤器应该是(objectClass=*)
<?php

$host = "192.168.1.98"; 
$user = "username"; 
$pswd = "password";

$ad = ldap_connect($host)
  or die( "Could not connect!" );

ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3)
 or die ("Could not set ldap protocol");

$bd = ldap_bind($ad, $user, $pswd)
  or die ("Could not bind");

$dn = "OU=users,DC=openDesk,DC=local";

$filter = "cn=*";


$search = ldap_search($ad, $dn, $filter)
    or die ("Search failed");

$entries = ldap_get_entries($ad, $search);

echo $entries["count"];


?>