ldap-search filter problem bei mehreren kriterien
Hallo,
Ich baue momentan an einer kleinen Telefonliste in PHP.
Diese soll per Filter alle Kontakte+User auslesen, welche auch eine Telephonnummer haben, außerdem sollen Einträge mit dem Namen Schule nicht erwähnt werden.
Folgendes hat ich mir überlegt (erstmal nur Telefonnummer + Schule
Das funktioniert allerdings nur, wenn ich den Filter auf (telephoneNumer=*) setze, sonst krieg ich immer die Fehlermeldung: Bad Search Filter.
Hat jemand eine Idee für mich? Habe mich soweit ich das sehen kann, an diese Netscape SDK Discovery und self-adsi gehalten.
Grüße
Risker
Edit: Mir hat bei (!displayname=Schule) ein Klammersatz gefehlt. (!(displayname=schule))
Ich baue momentan an einer kleinen Telefonliste in PHP.
Diese soll per Filter alle Kontakte+User auslesen, welche auch eine Telephonnummer haben, außerdem sollen Einträge mit dem Namen Schule nicht erwähnt werden.
Folgendes hat ich mir überlegt (erstmal nur Telefonnummer + Schule
<?php
/*
Author: -
Datum: 08.10.2009
Funktion: Aufbau eines neuen Telefonverzeichnisses auf Basis des ADs
*/
// Allgemeine Variablen, welche nötig für den LDAP Zugriff sind
$ldap_server = servername';
$ldap_user = 'username';
$ldap_password = 'passwort';
$ldap_basedn = 'dn';
// Nach was soll gesucht werden?
#$filter = "(|(objectClass=contact)(objectClass=user))";
$filter = "(&(!displayName=*Schule*)(telephoneNumber=*))";
// Verbinde mit Ldap Server
$ds = ldap_connect($ldap_server) or die (ldap_error($ds));
// Angeblich nötig für den Zugriff auf ein Win2003 AD
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
// Wenn Verbindung erfolgreich:
if($ds){
$ldapbind = @ldap_bind($ds,$ldap_user,$ldap_password) or die (ldap_error($ds));
$search = ldap_search($ds,$ldap_basedn,$filter) or die (ldap_error($ds));
$data = ldap_get_entries($ds,$search);
$anzahl = ldap_count_entries($ds,$search);
echo "Es gibt ".$anzahl." Einträge im AD";
for ($i=0; $i<$anzahl;$i++) {
$ergebnis[$i]["sn"] = utf8_decode($data[$i]["sn"]);
$ergebnis[$i]["givenname"] = utf8_decode($data[$i]["givenname"]);
$ergebnis[$i]["telephoneNumber"] = utf8_decode($data[$i]["telephonenumber"]);
$ergebnis[$i]["physicalDeliveryOfficeName"] = utf8_decode($data[$i]["physicaldeliveryofficename"]);
}
}else{
echo "Fehler!";
}
echo "<html>";
echo "<table border=0>";
for ($i=0; $i<$anzahl; $i++) {
echo "<tr>";
echo "<td width=200>" . $ergebnis[$i]["sn"] . ", ".$ergebnis[$i]["givenname"]. "</td>";
echo "<td width=200>" . $ergebnis[$i]["telephoneNumber"] . "</td>";
echo "<td width=150>" . $ergebnis[$i]["physicalDeliveryOfficeName"] . "</td>";
}
echo "</table>";
echo "</body></html>";
?>
Das funktioniert allerdings nur, wenn ich den Filter auf (telephoneNumer=*) setze, sonst krieg ich immer die Fehlermeldung: Bad Search Filter.
Hat jemand eine Idee für mich? Habe mich soweit ich das sehen kann, an diese Netscape SDK Discovery und self-adsi gehalten.
Grüße
Risker
Edit: Mir hat bei (!displayname=Schule) ein Klammersatz gefehlt. (!(displayname=schule))
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126726
Url: https://administrator.de/contentid/126726
Ausgedruckt am: 23.11.2024 um 02:11 Uhr