risker
Goto Top

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

<?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))

Content-Key: 126726

Url: https://administrator.de/contentid/126726

Printed on: April 24, 2024 at 00:04 o'clock