|
使用PHP连接LDAP服务器(2) { //认证 $bind_id = ldap_bind($connect_id); //执行搜索 $search_id = ldap_search($connect_id, $LDAP_ROOT_DN[$SERVER_ID], $ldap_query); //将结果集合分配给一个数组 $result_array = ldap_get_entries($connect_id, $search_id); } else { //显示连接错误 echo "Could not connect to LDAP server: $LDAP_SERVER[$SERVER_ID]"; } ?> 一旦我们与LDAP服务器建立好连接,我们就必须进行认证。PHP在连接大多数的数据库时,都是通过发送用户名和密码来进行的。不过,在LDAP中,认证是未知的,直到进行一个bind操作。在我们的例子中,“$bind_id”是绑定连接的标识符。我们是通过匿名绑定到公共的LDAP服务器的。因此,在执行ldap_bind()时,只使用连接识别号就可以了,无需其它的参数。 在经过认证后,我们就可以使用ldap_search()函数来执行查询,产生的$search_id是我们搜索的连接识别符。 然后,我们使用ldap_get_entries()函数将结果集赋给$result_array变量。这样我们能够以逻辑的方式排列信息,以便显示。 格式化输出: 在执行完LDAP搜索后,返回的数据是以查找的顺序排列的。不过我们在排序时没有SQL这样方便,使用ORDER BY语句就可以了。通常多数公共的LDAP目录都没有标准的大小规范。排序是基于字符的ASCII值,我们必须将字符全部格式化为小写,以便按字母的顺序输出。 LDAP结果集是一个多维的数组,脚本中的$result_array的结构如下: $result_array[0]["cn"] [0] = "Dannie Stanley" ["dn"] [0] = "uid=dannie,dc=spinweb.net" ["givenname"][0] = "Dannie" ["sn"] [0] = "Stanley" ["mail"] [0] = "danSPAM@spinweb.net" $result_array["cn"] [0] = "Michael Reynolds" ["dn"] [0] = "uid=michael,dc=spinweb.net" ["givenname"][0] = "Michael" ["sn"] [0] = "Reynolds" ["mail"] [0] = "michaelSPAM@spinweb.net" 数据以这种格式存放的原因是每个属性都可能有超过一个值(象树的结构)。例如,如果我的名 字是‘Dannie’,我还可以在LDAP中增加一些属性,例如: $result_array[0]["cn"] [0] = "Dannie Stanley"
|