Jump to content

sinistapenguin

New Members
  • Posts

    1
  • Joined

  • Last visited

    Never

Profile Information

  • Gender
    Not Telling

sinistapenguin's Achievements

Newbie

Newbie (1/5)

0

Reputation

  1. Hi All I am a complete novice in terms of PHP/ LDAP so am probably way out of my depth. We are using Joomla! as a CMS for our corporate Intranet. I was hoping to find an extension that would pull back a phone/ email directory from Active Directory (on W2K3). Having failed to find an extension, I started looking at writing something myself. I have pinched a script I found on the internet and it works in a limited way. I can connect/ bind etc. But I can only search within a specified OU. Our AD is organised like this: DOMAIN ----Office --------Dept ------------Users --------Dept ------------Users --------Dept ------------Users ----Office --------Dept ------------Users --------Dept ------------Users etc... I would like my script to search all of the offices & depts for users matching certain criteria. The script I pinched consists of a search page: Code: <form action="script.php" method="post"> Search criteria:<br /> <input type="text" name="keyword" size="20" maxlength="20" value="" /><br /> Filter:<br /> <select name="filter"> <option value="">Choose One:</option> <option value="sn">Last Name</option> <option value="telephonenumber">Phone</option> <option value="l">City</option> </select><br /> <input type="submit" value="Search!" /> </form> Which passes parameters to the script below (names have been changed to protect the innocent!): Code: <?php // Designate a few variables $host = "ldap://###.##.##.##"; $user = "ben.powell@jephson.org.uk"; $pswd = "myPassw0rd"; $ad = ldap_connect($host) or die( "Could not connect!" ); // Set version number ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3) or die ("Could not set ldap protocol"); // Binding to ldap server $bd = ldap_bind($ad, $user, $pswd) or die ("Could not bind"); // Create the DN $dn = " OU=IT Customer Support, OU=Office Central, DC=domain, DC=local"; // Specify only those parameters we're interested in displaying $attrs = array("displayName","userPrincipalName","physicalDeliveryOfficeName","givenName", "telephoneNumber"); // Create the filter from the search parameters $filter = $_POST['filter']."=".$_POST['keyword']."*"; $search = ldap_search($ad, $dn, $filter, $attrs) or die ("ldap search failed"); $entries = ldap_get_entries($ad, $search); if ($entries["count"] > 0) { echo "<table border='1' width='90%'>"; echo "<tr>"; echo "<td>Name:</td>"; echo "<td>Office:</td>"; echo "<td>Email:</td>"; echo "<td>Telephone:</td>"; echo "</tr>"; for ($i=0; $i<$entries["count"]; $i++) { echo "<tr>"; echo "<td>".$entries[$i]["displayname"][0]."</td>"; echo "<td>".$entries[$i]["physicaldeliveryofficename"][0]."</td>"; echo "<td> <a href='mailto:".$entries[$i]["userprincipalname"][0]."'>".$entries[$i]["userprincipalname"][0]."</a></td>"; echo "<td>".$entries[$i]["telephonenumber"][0]."</td>"; echo "</tr>"; } echo "</table>"; } else { echo "<p>No results found!</p>"; } ldap_unbind($ad); ?> This works fine and I can find anyone within the "OU=IT Customer Support, OU=Office Central" department. Unfortunately I can't figure out how to make it search the whole tree. According to the PHP site, it does this by default, but I can't figure out what I need to change. Is it the $dn= bit? I have tried everything I can think of here. Any help would be gratefully received. Thanks Ben
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.