countnikon Posted July 21, 2006 Share Posted July 21, 2006 I built this class for LDAP authentication and Schema Searches. I thought you all might like it. It also handle more than one OU which all the LDAP classes I've seen do not handle. Here it is for what it's worth.[code]<?PHP/* ******************************************************************************************LDAP Class Class Created 7-5-06 This class allows for LDAP searches and authentication against AD. You can use a foreach loop in your code that calls this class to display all entries ------------------------------------------------------------------------------------------Example LDAP Search. ------------------------------------------------------------------------------------------$ouArray = array('acct','sales','purchasing','exec','it'); $ldap = new ldap("dc.domain.com","389","dc=domain,dc=com"); $ldap->ldapConn(); $bind=$ldap->ldapBind("ldapuser","ldappass"); if($bind==false) echo "Bind Failed<br>";//This goes as follows//ldapSearch('what you want to pull','self explanitory','your ou array','what you are searching against')//you can search against anything in the schema. $description = $ldap->ldapSearch("description","$usrname",$ouArray,"samaccountname"); if($description) { foreach($description as $output) $company=$output; } ------------------------------------------------------------------------------------------Example Ldap Authenticate ------------------------------------------------------------------------------------------$usrname=$_POST['usrname']; $pass=$_POST['pass']; $ldap = new ldap("dc.domain.com","389","dc=domain-systems,dc=com"); $ldap->ldapConn(); $auth = $ldap->ldapAuthenticate("$usrname","$pass"); if($auth) echo "Successful Authentication<br>"; else echo "Authentication Failed."; ------------------------------------------------------------------------------------------Modifications ------------------------------------------------------------------------------------------*******************************************************************************************/class ldap{ var $ldapConn; //ldap connection storage variable var $ldapBind; //ldap bind storage variable var $entries; //ldap entries variable var $ldapLookupUser; var $ldapLookupPass; var $server; var $port; var $by; var $search; var $baseDN; //Function to create the ldap object function ldap($server,$port,$baseDN) { $this->server=$server; //sets the dc server $this->port=$port; //sets the port to connect to AD $this->baseDN=$baseDN; //Sets the base DN for LDAP searches } //connects to the AD server function ldapConn() { //connects to AD server $this->ldapConn = @ldap_connect($this->server,$this->port); return $this->ldapConn; } //Binds to the AD server so you can do lookups against it function ldapBind($ldapLookupUser,$ldapLookupPass) { if(@ldap_bind($this->ldapConn,$ldapLookupUser,$ldapLookupPass)) { $this->ldapBind = @ldap_bind($this->ldapconn,$ldapLookupUser,$ldapLookupPass); //returns true if you are able to bind return true; } else return false; } //Authenticates a User against AD function ldapAuthenticate($usrname,$password) { if(@ldap_bind($this->ldapConn,$username,$password)) return true; else return false; } //Searches the ldap schema function ldapSearch($by,$search,$ous,$searchby) { $c=0; foreach($ous as $ou) //This foreach loop allows the searching through multiple OU's' { /*This line searches the AD Schema. It is setup so that you can search for any schema item by any schema item. */ $read=ldap_search($this->ldapConn,"ou=$ou,$this->baseDN", "$searchby=*$search*"); //This line reads in the entries for output $entries = ldap_get_entries($this->ldapConn, $read); //Loops through the entries and puts them in the array values for ($i=0; $i<$entries["count"]; $i++) { if($entries[$i][$by][0]) $values[$c]=$entries[$i][$by][0]; $c++; } } return $values; //returns the values of the search }}?>[/code] Quote Link to comment https://forums.phpfreaks.com/topic/15257-cool-ldap-class-for-ad/ Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.