arnyinc
02-27-2006, 04:02 PM
I'm just starting out integrating PHP with LDAP. The way our active directory is organized is OU=Accounts,OU=US,DC=mycorp,DC=com. The OU for "region" is different depending on your location. For example, someone in Canada would be OU=Accounts,OU=CA,DC=mycorp,DC=com. Using the code below, I can lookup a user if I know this location but I would never know this location until I looked them up (catch 22). :o
It appears that all users belong to the Domain Users group, but I can't figure out how to specify this as the base dn and get PHP to print out their information.
<?
$passeduser=strtolower($_SERVER["AUTH_USER"]);
list($dmn, $zid)=split("\\\\", $passeduser);
$ldap_server = "ldap://".$dmn.".mycorp.com";
$auth_user = "user@mycorp.com";
$auth_pass = "fake";
//This base dn doesn't work
//$base_dn = "CN=Domain Users,CN=Users,DC=mycorp,DC=com";
//This base dn works
$base_dn = "OU=Accounts,OU=US,DC=mycorp,DC=com";
$filter = "(&(objectClass=user)(objectCategory=person)(cn=myid))";
if (!($connect=ldap_connect($ldap_server)))
die("Could not connect to ldap server");
else
echo "Connected to ".$dmn."\n<br>";
if (!($bind=ldap_bind($connect, $auth_user, $auth_pass)))
die("Unable to bind to server");
else
echo "Successful bind to ".$dmn."\n<br>";
if (!($search=ldap_search($connect, $base_dn, $filter)))
die("Unable to search ldap server");
else
echo "Successful search\n<br>";
$info=ldap_get_entries($connect, $search);
for ($i=0; $i<=count(info)-1; $i++){
echo "Name is: ". $info[$i]["name"][0]."<br>";
echo "Display name is: ". $info[$i]["displayname"][0]."<br>";
echo "Email is: ". $info[$i]["mail"][0]."<br>";
echo "Address is: ". $info[$i]["streetaddress"][0]."<br>";
echo "Telephone number is: ". $info[$i]["telephonenumber"][0]."<br>";
echo "Primary Group ID is: ". $info[$i]["primarygroupid"][0]."<br>";
for ($j=0; $j<count($info[$i]["member"])-1; $j++)
echo "Members: ". $info[$i]["member"][$j]."<br>";
}
echo "</p>\n";
ldap_unbind($connect);
?>
It appears that all users belong to the Domain Users group, but I can't figure out how to specify this as the base dn and get PHP to print out their information.
<?
$passeduser=strtolower($_SERVER["AUTH_USER"]);
list($dmn, $zid)=split("\\\\", $passeduser);
$ldap_server = "ldap://".$dmn.".mycorp.com";
$auth_user = "user@mycorp.com";
$auth_pass = "fake";
//This base dn doesn't work
//$base_dn = "CN=Domain Users,CN=Users,DC=mycorp,DC=com";
//This base dn works
$base_dn = "OU=Accounts,OU=US,DC=mycorp,DC=com";
$filter = "(&(objectClass=user)(objectCategory=person)(cn=myid))";
if (!($connect=ldap_connect($ldap_server)))
die("Could not connect to ldap server");
else
echo "Connected to ".$dmn."\n<br>";
if (!($bind=ldap_bind($connect, $auth_user, $auth_pass)))
die("Unable to bind to server");
else
echo "Successful bind to ".$dmn."\n<br>";
if (!($search=ldap_search($connect, $base_dn, $filter)))
die("Unable to search ldap server");
else
echo "Successful search\n<br>";
$info=ldap_get_entries($connect, $search);
for ($i=0; $i<=count(info)-1; $i++){
echo "Name is: ". $info[$i]["name"][0]."<br>";
echo "Display name is: ". $info[$i]["displayname"][0]."<br>";
echo "Email is: ". $info[$i]["mail"][0]."<br>";
echo "Address is: ". $info[$i]["streetaddress"][0]."<br>";
echo "Telephone number is: ". $info[$i]["telephonenumber"][0]."<br>";
echo "Primary Group ID is: ". $info[$i]["primarygroupid"][0]."<br>";
for ($j=0; $j<count($info[$i]["member"])-1; $j++)
echo "Members: ". $info[$i]["member"][$j]."<br>";
}
echo "</p>\n";
ldap_unbind($connect);
?>