Search the LDAP Directory in PHP

Search the LDAP Directory in PHP

This PHP code connects to an LDAP server, performs a search for entries with the last name and then sorts and prints them alphabetically. The sorting is done by a custom function called compareEntry, which compares entries based on last names and first names. It uses the LDAP functions to communicate with the server and showcases basic error handling.

The code demonstrates the use of arrays, loops, sorting, and LDAP functions, making it a good example for understanding how to interact with LDAP servers in PHP.

/*
 ** Function: compareEntry
 ** This function compares two entries for
 ** the purpose of sorting.
 */ function compareEntry($left, $right)
 {
 $ln = strcmp($left["last"], $right["last"]);
 if($ln == 0)
 {
 return(strcmp($left["first"],
 $right["first"]));
 }
 else
 {
 return($ln);
 }
 }
 
 //connect to LDAP server
 if(!($ldap=ldap_connect("ldap.php.net")))
 {
 die("Could not connect to LDAP server!");
 }
 
 //set up search criteria
 $dn = "dc=php, dc=net";
 $filter = "sn=Atkinson";
 $attributes = array("givenname", "sn");
 
 //perform search
 if(!($result = ldap_search($ldap, $dn, $filter, $attributes)))
 {
 die("Nothing Found!");
 }
 
 //get all the entries
 $entry = ldap_get_entries($ldap, $result);
 
 print("There are " . $entry["count"] . " people.<br />\n");
 
 //pull names out into array so we can sort them
 for($i=0; $i < $entry["count"]; $i++)
 {
 //Note how we only use the first entry.  This
 //code assumes people only have one first name,
 //and one last name.
 $person[$i]["first"] = $entry[$i]["givenname"][0];
 $person[$i]["last"] = $entry[$i]["sn"][0];
 }
 
 //sort by last name, then first name using
 //compareEntry (defined above)
 usort($person, "compareEntry");
 
 
 //loop over each entry
 for($i=0; $i < $entry["count"]; $i++)
 {
 print($person[$i]["first"] . " " .
 $person[$i]["last"] . "<br />\n");
 }
 
 //free memory used by search
 ldap_free_result($result);
Categories: PHP Source Code
M. Saqib: Saqib is Master-level Senior Software Engineer with over 14 years of experience in designing and developing large-scale software and web applications. He has more than eight years experience of leading software development teams. Saqib provides consultancy to develop software systems and web services for Fortune 500 companies. He has hands-on experience in C/C++ Java, JavaScript, PHP and .NET Technologies. Saqib owns and write contents on mycplus.com since 2004.
Related Post