Jump to content

LDAP Search not searching whole tree


sinistapenguin

Recommended Posts

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

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.