ldap_rename 只能移动目录树的叶子节点。如果您的ldap条目有任何子条目,那么ldap_rename就不是您需要的工具。我们需要更改用户名,但这会更改dn。ldap_rename不起作用,因为我们的每个用户ldap条目都有几个相关的子条目。我们必须编写一个函数来将子树递归复制到新位置,然后删除原始版本。以下是基本算法
function recursive_move($old_username, $new_username)
对旧用户名执行ldap_search以获取正确的条目
ldap_get_attributes 获取ldap条目中的值数组
遍历数组中的每个属性,将$old_username 的出现替换为$new_username
将属性数组添加到新位置
ldap_modify 任何其他属性
ldap_list 每个子条目
对每个子项调用函数recursive_move
ldap_delete 当前条目
返回