精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● PHP>>功能代码>>邮件相关>>使用PHP连接LDAP服务器(二)

主题:使用PHP连接LDAP服务器(二)
发信人: link_wb(火柴天堂)
整理人: dalasthunder(2002-07-25 06:30:13), 站内信件
建立LDAP查询 

  前面已经提到,LDAP查询与SQL查询是不一样的。因此,语句要受到一定的限制,以下是一个基本的例子。 

//Create Query $ldap_query = "cn=$common";  

  在我们的例子中,“cn”是我们要进行搜索的属性,而$common是由搜索的form中得到的字符串变量。LDAP的查询语句语句可使用通配符‘*’。例如‘$stanley’将可以找出‘dan stanley’。 

连接到LDAP服务器 

  以下的函数连接到一个LDAP资源,并且将连接的识别号赋给一个变量,就好象连接到一个通常的数据库一样,例如MySQL。 

<?php  

//连接到LDAP  
$connect_id = ldap_connect($LDAP_SERVER[$SERVER_ID]);  

?>  

  在我们的例子中,“$connect_id”是连接的识别号,$LDAP_SERVER是可能的ldap服务器数组,而$SERVER_ID是由搜索表格得到的LDAP服务器变量。 

如果连接成功,处理查询 

   如果连接成功的话,我们将得到一个有效的LDAP连接识别号,这样我们就可以处理查询。 

<?php  

if($connect_id)  
{  
//认证 
$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变量。这样我们能够以逻辑的方式排列信息,以便显示。 

[关闭][返回]