2
我正在建立与Active Directory用户/员工列表的连接。我通过.NET完成了这项工作,但无法在我的PHP应用程序中使用它。php ldap_search不返回结果
我consistantly得到0
我使用SAM帐户和SAM帐户作为过滤器尝试计数,这不会改变结果。
我成功连接,为改变$ LDAP将不再能够找到服务器。
我使用的有效凭证,如改变$ AUTHUSER或$ authPath提供授权的错误消息。
的的ldap_bind(我相信)工作,因为它执行搜索和输出的0.1
这里计数是我的代码:
<?php
try{
$ldap = "vmc-dc.CompanyName.vmc";
$authUser = "vmc\\MyUsername";
$authPass = "MyPassword";
$baseDn = "dc=vmc-dc,dc=CompanyName,dc=com";
$filter="(&(objectClass=user)(samaccountname=*))";
$conn = ldap_connect($ldap, 389) ;
if ($conn) {
ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($conn, LDAP_OPT_REFERRALS, 0);
// binding to ldap server
$ldapbind = ldap_bind($conn, $authUser, $authPass);
// verify binding
if ($ldapbind) {
//$sr=ldap_read($conn, $baseDn, $filter);
$sr=ldap_search($conn, $baseDn, $filter);
$number_returned = ldap_count_entries($conn,$sr);
echo "Count: " . $number_returned . "<br/>";
$entry = ldap_get_entries($conn, $sr);
ldap_close($conn);
echo "value = '" . $entry[0] . "'";
} else {
echo "LDAP conn ok...";
}
}
} catch (Exception $e) {
}
?>
验证是否可以使用ldapsearch命令行工具检索所需的数据:'的ldapsearch -h主机名-p端口-b的baseDn -s子-D DN -w密码“(&(objectClass的=用户)(Sam帐户= * ))“1.1”。 –
如果你想要所有的用户,'(&(objectCategory = person)(objectClass = user))'是你最好的选择。 –
对于Brian的观点,对objectCategory = person的需求是排除计算机对象。 – geoffc