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_add 將屬性陣列新增到新位置
使用 ldap_modify 修改任何其他屬性
使用 ldap_list 列出每個子項目
對每個子項目呼叫函數 recursive_move
使用 ldap_delete 刪除目前的項目
返回