LDAP Query
| From: | php at swimwebs dot com | Date: | Thu, 18 May 2006 15:34:35 +0000 |
| Subject: | LDAP Query | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-236401@lists.php.net to get a copy of this message | ||
Our organization is migrating away from Novell E-directory to MS Active Directory. I have a php
class that allows me to run various queries on our e-directory ldap server which I am working to
convert to AD. However, I'm running into an error that i cannot figure out. I have updated
the base_dn to point tothe correct location (verified by a third party ldap browser). Also added a
username and password since our AD environment doesn't allow anonymous queries. The error I
get is
Warning: ldap_search() [function.ldap-search]: Search: Operations error in
/var/www/html/intranet/_php/class.ldap_test.php on line 149
On that line I have this line of code
$result = ldap_search($this->conn,$this->base_dn,$filter);
Where $this->conn evaluates to Resource id #3, $this->base_dn is the correct dn
(ou=something,dc=domain,dc=domain_part_2) and $filter is cn=myusername
Can anyone shed some light on this? Below is the entire method from the class.
function connectldap($filter,$override=false) {
//connect to the server
$this->conn = ldap_connect($this->server);
//if the connection failed, set the error message
//and return false
if(!$this->conn) {
$this->errMsg[] = "Unable to connect to server\n";
return false;
}
//ldap_set_option($this->conn, LDAP_OPT_PROTOCOL_VERSION, 3);
//bind the connection. This function will perform an
//anonymous query to get the full
$bind = @ldap_bind($this->conn,$this->ldap_user,$ldap_passwd);
if(!$bind) {
$this->errMsg[] = "Unable to bind to server\n";
return false;
}
echo "<p>$filter - " . $this->conn . " - " . $bind . " - "
. $this->base_dn . "</p>\n";
//run the ldap query
$result = ldap_search($this->conn,$this->base_dn,$filter);
//if the search failed, then return false and set the error message
if(!$result) {
$this->errMsg[] = "Search failed - " . ldap_error($this->conn) . "\n";
return false;
}
//get the entries and store them in a variable
$info=ldap_get_entries($this->conn,$result);
//if the number of entries reutnred is zero, then the user
//could not be found in the ldap server
if($info["count"] == 0) {
$this->errMsg[] = "User Unknown\n";
return false;
}
//otherwise, if the number of entries found is greater than 1, then
//more than one object was found.
elseif($info["count"]>1 && !$override) {
$this->errMsg[] = "There was more than one user found\n";
return false;
}
else {
return $info;
}
}
Thank you,
Robbert van Andel