<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[ldap相关]Ldap操作指南。。。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sat, 11 Aug 2007 10:17:47 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	LDAP是什么 <br/>LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用，不过根据组织者的需要，它可以做得更加强大。 <br/> &nbsp; <br/> &nbsp;<br/> &nbsp;<br/> &nbsp; <br/>　　LDAP最基本的形式是一个连接数据库的标准方式。该数据库为读查询作了优化。因此它可以很快地得到查询结果，不过在其它方面，例如更新，就慢得多。要特别注意的是，LDAP通常作为一个hierarchal数据库使用，而不是一个关系数据库。因此，它的结构用树来表示比用表格好。正因为这样，就不能用SQL语句了。 <br/><br/>　　简单说来，LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。 <br/><br/>LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写，其实是一话号码簿，类似于我们所使用诸如NIS(Network Information Service)、DNS (Domain Name Service)等网络目录，也类似于你在花园中所看到的树木。 <br/>LDAP是一种特殊的数据库。但是LDAP和一般的数据库不同，明白这一点是很重要的。 LDAP对查询进行了优化，与写性能相比LDAP的读性能要优秀很多。 <br/>1.1 LDAP的存储规则 <br/>区分名（DN，Distinguished Name） <br/>和自然界中的树不同，文件系统/LDAP/电话号码簿目录的每一片枝叶都至少有一个独一无二的属性，这一属性可以帮助我们来区别这些枝叶。 <br/>在文件系统中， 这些独一无二的属性就是带有完整路径的文件名。比如/etc/passwd，该文件名在该路径下是独一无二的。当然我们可以有/usr/passwd, /opt/passwd，但是根据它们的完整路径，它们仍然是唯一的。 <br/>在LDAP中，一个条目的区分名称叫做“dn”或者叫做区分名。在一个目录中这个名称总是唯一的。比如，我的dn是"uid=aghaffar, ou=People, o=developer.ch"。不可能有相同的dn，但是我们可以有诸如"uid=aghaffar, ou=Administrators, o=developer.ch"的dn。这同上面文件系统中/etc/passwd 和 /usr/passwd的例子很类似。 <br/>我们有独一无二的属性，在"ou=Administrators, o=developer.ch" 中uid和在"ou=People, o=developer.ch"中的uid。这并不矛盾。 <br/>CN=Common Name 为用户名或服务器名，最长可以到80个字符，可以为中文； <br/>OU=Organization Unit为组织单元，最多可以有四级，每级最长32个字符，可以为中文； <br/>O=Organization 为组织名，可以3—64个字符长 <br/>C=Country为国家名，可选，为2个字符长 <br/><br/>LDAP目录以一系列“属性对”的形式来存储记录项，每一个记录项包括属性类型和属性值（这与关系型数据库用行和列来存取数据有根本的不同）。 <br/>mail = testmail@mccc.net <br/>othermailbox = testmailother@mccc.com <br/>givenname = givenname <br/>sn = test sn <br/>属性可添加，以下一个属性必须赋值： <br/>objectclass=person (值为：person 或 server 或 organization 或 其他自定义的值) <br/><br/>2 Php如何操作LDAP <br/>2.1 Php如何与LDAP连接和关闭 <br/>$ds=ldap_connect("ServerName") <br/>ServerName是LDAP的服务器名， <br/><br/>例: <br/>$ds=ldap_connect(“10.31.172.30:1000”) <br/>返回值是：true 或 false <br/><br/>关闭连接 <br/>ldap_close($ds); <br/><br/>2.2 在php中如何搜索用户信息 <br/><br/>$ds=ldap_connect("10.31.172.30:1000"); <br/>//首先连接上服务器 <br/>$justthese = array("cn","userpassword",”location”); <br/>//搜索函数中的一个参数，要求返回哪些信息， <br/>//以上传回cn,userpassword,location,这些都要求小写 <br/>$sr=ldap_search($ds,"o=jite", "cn=dom*",$justthese); <br/>//第一个参数开启LDAP的代号 <br/>//第二个参数最基本的 dn 条件值 , 例：”o=jite,c=cn” <br/>//第三个参数 filter 为布林条件，它的语法可以在 Netscape 站上找一份 dirsdkpg.pdf 档案. <br/>// ’o’为组织名，’cn’ 为用户名,用户名可用通配符 ’*’ <br/>echo "domadmin姓氏有".ldap_count_entries($ds,$sr)." 个<p>"; <br/>//ldap_count_entries($ds,$sr)传回记录总数 <br/><br/>$info = ldap_get_entries($ds, $sr); <br/>//LDAP的全部传回资料 <br/>echo "资料传回 ".$info["count"]."笔:<p>"; <br/>for ($i=0; $i<$info["count"]; $i++) &#123; <br/>echo "dn为：". $info[$i]["dn"] ."<br/>"; <br/>echo "cn为：". $info[$i]["cn"][0] ."<br/>"; //显示用户名 <br/>echo "email为：". $info[$i]["mail"][0] ."<p>"; //显示mail <br/>echo "email为：". $info[$i][“userpassword"][0] ."<p>"; //显示加密后的密码 <br/>&#125; <br/>2.3 添加用户 <br/>$ds=ldap_connect("10.31.172.30:1000"); <br/>//首先连接上服务器 <br/>$r=ldap_bind($ds,"cn=domadmin,o=jite","password"); <br/>//系住一个管理员，有写的权限 <br/>// cn=domadmin,o=jite顺序不能变 <br/>$info["cn"]="aaa"; //必填 <br/>$info["userpassword"]="aaa"; <br/>$info["location"]="shanghai"; <br/>$info["objectclass"] = "person"; //必填person为个人，还有server… <br/>ldap_add($ds, "cn=".$info["cn"].",o=jite", $info); <br/>ldap_unbind($ds); <br/>//取消绑定 <br/>ldap_close($ds); <br/>//关闭连接 <br/>2.4 删除用户 <br/>$ds=ldap_connect("10.31.172.30:1000"); <br/>//首先连接上服务器 <br/>ldap_bind($ds,"cn=domadmin,o=jite","password"); <br/>//绑定管理员，有删除的权限 <br/>$dn="cn=dingxf,o=jite"; <br/>ldap_delete($ds, $dn); <br/>//删除用户 <br/>ldap_unbind($ds); <br/>//取消绑定 <br/>ldap_close($ds); <br/>//关闭连接 <br/>2.5 修改用户资料 <br/>$ds=ldap_connect("10.31.172.30:1000"); <br/>//首先连接上服务器 <br/>ldap_bind($ds,"cn=domadmin,o=jite","password"); <br/>//绑定管理员，有修改的权限 <br/>$dn="cn=dingxf,o=jite"; <br/>//用户dn <br/>$info["userpassword"]="aaa"; //要修改的信息，放在数组变量中 <br/>$info["location"]="shanghaisdaf"; <br/><br/>ldap_modify($ds, $dn , $info); <br/>//修改函数 <br/>ldap_unbind($ds); <br/>//取消绑定 <br/>ldap_close($ds); <br/>//关闭连接 <br/>2.6 用户登录验证 <br/>$ds=ldap_connect("10.31.172.30:1000"); <br/>//首先连接上服务器 <br/>if (ldap_bind($ds,"cn=dingxf,o=jite","dingxf"))&#123; <br/>echo "验证通过"; <br/>&#125;else&#123; <br/>echo "验证不通过"; <br/>&#125; <br/>ldap_unbind($ds); <br/>//取消绑定 <br/>ldap_close($ds); <br/>//关闭连接 <br/><br/><br/><br/><br/>注：此方法比较简单，实用，它也有不足之处，如果不通过，ldap_bind()提示它自带的提示语：”Warning: LDAP: Unable to bind to server: Inappropriate authentication in /home/htdocs/jldl.net/ldap/test.php3 on line 16”进入讨论组讨论。 
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [ldap相关]Ldap操作指南。。。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>