用php操作Ldap(急!!!)

maria57 2007-03-28 11:51:06
数据存放的格式是:
先是ou(部门)
下面就是该部门成员记录
怎么用php取得LDAP的ou列表?
...全文
310 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy4u 2007-03-29
  • 打赏
  • 举报
回复
我觉得不管指不指定 OU ,dn只要存在,就可以对其对应的子树进行搜索
phpldapadmin的源码 phpldapadmin/lib/server_functions.php 中判断dn是否存在的函数:

function dnExists($link, $dn) {
# Set default return
$return = false;

$search_result = @ldap_read($link, $dn, 'objectClass=*', array('dn'));

if ($search_result) {
$num_entries = ldap_count_entries($link,$search_result);

if ($num_entries > 0) {
$return = true;
} else {
$return = false;
}

} else {
$return = false;
}

return $return;
}

而取得LOAP的所有OU应该用
$search=@ldap_search($link, "dc=yahoo,dc=ali,dc=com", "(ou=*)", array("ou"))

这是一个demo,可以试试
http://thesmithfam.org/phpldapadmin-demo/htdocs/search.php?server_id=0&form=advanced
=====================
maria57(快乐的鱼) ( ) 信誉:100 Blog 2007-3-28 12:57:14 得分: 0
另外,如果不指定ou的话,能不能进行搜索啊?
maria57 2007-03-29
  • 打赏
  • 举报
回复
我的代码:
<?php
$ldap["user"]="contacts";
$ldap["password"]="backyard";
$ldap["dn"]="dc=yahoo,dc=ali,dc=com";
$justthese = array("ou", "sn", "givenname", "mail");
$ldap["search"]="(cn=s*)";
if($ldap["con"] = ldap_connect("yahoo.ali.com"))
{
echo "success!";
if(ldap_bind($ldap["con"],$ldap["user"],$ldap["password"]))
print("<br>LDAP bind worked for ".$ldap["user"]);

if($search=@ldap_search($ldap["con"],$ldap["dn"],$ldap["search"],$justthese))
{
print("<br>find success!".$search."<br>");
}
else
{
print("<br>find failed".ldap_errno($ldap["con"]));
}
?>

结果:
success!
LDAP bind worked for contacts
find failed1

请问为什么会出现LDAP_OPERATIONS_ERROR 0x01 的错误
maria57 2007-03-28
  • 打赏
  • 举报
回复
另外,如果不指定ou的话,能不能进行搜索啊?
iasky 2007-03-28
  • 打赏
  • 举报
回复
http://cn.php.net/manual/zh/ref.ldap.php
PhoenixSky 2007-03-28
  • 打赏
  • 举报
回复
建议看一下phpldapadmin的源码。
里面会有你需要知道的答案

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧