Novell Home

Search eDirectory via LDAP in PHP

From Developer Community

This code sample shows how to search eDirectory in PHP using LDAP.

Sample Code

<?php
// basic sequence with LDAP is connect, bind, search, interpret search
// result, close connection

$server = 'localhost';
$dn = 'cn=admin,o=novell';
$pw = 'novell';
$searchstring="(objectclass=user)";
$attnames=array("dn","cn","surname","mail","groupmembership");

$ds=ldap_connect($server);  // must be a valid LDAP server!

if ($ds) { 
    $r=ldap_bind($ds, $dn, $pw); 
                           // read-only access
    if($r) echo "ldap_bind success<br>";
	
	//ldap_search searches sub.  
	//ldap_list searches one level.
	//ldap_read searches base.
    $r=ldap_search($ds,"o=novell", $searchstring, $attnames);  
	if($r) echo "ldap_search success<br>";
	
    echo "Number of entires returned is ".ldap_count_entries($ds,$r)."<p>";

    $entries = ldap_get_entries($ds, $r);
    echo "Data for ".$entries["count"]." items returned:<p>";

    for ($i=0; $i<$entries["count"]; $i++) {
        echo "<p>";
		// Any multi-valued object will return like the following:
		// $entries[0]['mail']['count']=2
		// $entries[0]['mail'][0]='a@b.com'
		// $entries[0]['mail'][1]='b@b.com'
		foreach($attnames as $attname){
			if(isset($entries[$i][$attname])){
				if(is_array($entries[$i][$attname])){
					for($j=0;$j<$entries[$i][$attname]["count"];$j++){
						echo $attname." entry is: ". $entries[$i][$attname][$j] ."<br>";
					}
				}else{
					echo $attname." entry is: ".$entries[$i][$attname]."<br>";
				}
			}
		}
		echo "</p>";
    }
    ldap_close($ds);

} else {
    echo "<h4>Unable to connect to LDAP server</h4>";
}
?>

--Paul Jones

Novell® Making IT Work As One

© 2008 Novell, Inc. All Rights Reserved.