Hi out there!
I'm somewhat stuck here with a little problem of mine. I want to question AD for Name, Surname, Telefon and so on. Fine...No Problem. Now, I got not only one "Users" container, but three different ones named "Users A.AFL 8", "Externe" and "Trainer".
If I want to query for all members in all of these three containers in ONE LDAP-Filter, how the f*#k i have to do it?
Maybe I haven't had enough coffee this morning...
Here comes my code....
$ad = ldap_connect($host) or die( "Verbindung zum Verzeichnis konnte nicht hergestellt werden!" );
// Set version number
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 2) or die ("LDAP-Protokoll konnte nicht gesetzt werden!");
// Binding to ldap server
$bd = ldap_bind($ad, $user, $pswd) or die ("Anmeldung am Verzeichnis fehlgeschlagen!");
// Create DNs
$dn = "ou=Users A.AFL 8,DC=abd2,DC=bku-web,DC=db,DC=de";
$dn1 = "ou=Externe,DC=abd2,DC=bku-web,DC=db,DC=de";
$dn2 = "ou=Trainer,DC=abd2,DC=bku-web,DC=db,DC=de";
// Specify only those parameters we're interested in displaying
$attrs = array("title","displayname","mail","telephonenumber","homephone","mobile","company","department","description","streetaddress","postalcode","l","physicaldeliveryofficename");
//Ausgabe für "Gesamtes Verzeichnis"
Case "All":
$dn = "DC=abd2,DC=bku-web,DC=db,DC=de";
$filter1 = $POST['filter']."=".$POST['keyword']."*";
$filter = "(&($filter1)(!(ou=users))";
$search = ldap_search($ad, $dn, $filter, $attrs) or die ("Verzeichnisabfrage fehlgeschlagen!");
$entries = ldap_get_entries($ad, $search);
echo "<font face='arial'>";
echo "<h1>Das gesamte Verzeichnis von A.AFL 8 / 9 inklusive Trainern und Externen</h1>";
echo "<p><a href='javascript:history.back()'>Zurück zur Suchmaske</a></p>";
if (!$entries["count"] > 0){
echo "<p>Keine Übereinstimmung gefunden!</p>";
} else {
echo "<h1>Mitarbeiter A.AFL 8 / 9</h1>";
echo "<table border='1' frame='below' rules='rows' width='100%'>";
echo "<colgroup>";
echo "<col>";
echo "<col>";
echo "</colgroup>";
echo "<tr>";
for ($i=0; $i<$entries["count"]; $i++) {
echo "<td nowrap>";
echo "<p> </p>";
echo "<p><b>Name: </b>".$entries[$i]["title"][0]." ".$entries[$i]["displayname"][0]."<br />";
echo "<b>Telefon Büro: </b>".$entries[$i]["telephonenumber"][0]."<br />";
echo "<b>Telefon Privat: </b>".$entries[$i]["homephone"][0]."<br />";
echo "<b>Telefon Mobil: </b>".$entries[$i]["mobile"][0]."<br />";
echo "<b>eMail-Adresse: </b><a href='mailto:".$entries[$i]["mail"][0]."'>".$entries[$i]["mail"][0]."</a><br />";
echo "<b>Firma: </b>".$entries[$i]["company"][0]."<br />";
echo "<b>Abteilung: </b>".$entries[$i]["department"][0]."<br />";
echo "<b>Team: </b>".$entries[$i]["description"][0]."<br />";
echo "<b>Büroanschrift: </b>".$entries[$i]["streetaddress"][0].", ".$entries[$i]["postalcode"][0].", ".$entries[$i]["l"][0]."<br />";
echo "<b>Raumnummer: </b>".$entries[$i]["physicaldeliveryofficename"][0]."</p>";
echo "<p></p>";
echo "</td>";
echo "<td>";
$imgname = trim(strrchr($entries[$i]["displayname"][0]," ")); //"displayname" nach dem ersten letzen Leerzeichen durchsuchen und dieses wegnehmen
$imgname = eregi_replace("ä","ae",$imgname);
$imgname = eregi_replace("ö","oe",$imgname);
$imgname = eregi_replace("ü","ue",$imgname);
$imgname = eregi_replace("ß","ss",$imgname);
$bildda= 'images/mitarbeiter/'.$imgname.'.jpg';
if (file_exists($bildda)) {
echo "<img src='/images/mitarbeiter/".$imgname.".jpg'>";
} else {
echo "<img src='/images/mitarbeiter/nopic.gif'>";
}
echo "</td>";
echo "</tr>";
}
echo "</table>";
}
ldap_unbind($ad);
}
else:
?>
The red line was my problem - it wasn't enough coffeein in my brain: in the $filter-variable, do not mix variables and strings. Apparently works only when both conditions are from one kind.
Greetz
Kai Adelmann