私は、Active Directoryのユーザ/従業員リストへの接続を確立しています。私はこれを.NETでやったことがありますが、私のPHPアプリケーションでうまく動作しません。PHP ldap_searchが結果を返さない
私はconsistantly 0私は、フィルタとしてのsAMAccountNameとのsAMAccountNameを使用してみました
のカウントを取得し、これは結果を変更しません。
$ ldapを変更してもサーバが見つからないため、接続に成功しました。
有効な資格情報を使用しています。$ authUserまたは$ authPathを変更すると、許可されたエラーメッセージが表示されるためです。
はldap_bindは(私は推測)、それは検索を行い行い、ここで
0のカウントを出力するので、働いている私のコードです:あなたのフィルターが広すぎるかしら
<?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 hostname -p port -b baseDn -s sub -D dn -w password"(&(objectClass = user)(samaccountname = )) "1.1"。 –
すべてのユーザが必要な場合は、 '(&(objectCategory = person)(objectClass = user))'がフィルタの最善の策になります。 –
Brianの観点からは、objectCategory = personの必要性はコンピュータオブジェクトを除外することです。 – geoffc