2012-07-09 32 views
0

我已經嘗試通過php ldap Active-Directory爲Microsoft Server 2008 R2數據中心添加用戶,但是我不能。我總是得到這個錯誤:通過php ldap_add添加微軟活動目錄中的用戶

An error occurred. Error number 64: Naming violation 

的代碼是:

<?php 
$ldaprdn = '[email protected]'; 
$ldappass = '[email protected]'; 
$ds = 'correo.mx'; 
$dn = 'ou=usuarios,dc=correo,dc=mx'; 
$puertoldap = 389; 
$ldapconn = ldap_connect($ds,$puertoldap)or die("ERROR: I Don'n connect to LDAP."); 

if ($ldapconn) 
{ 
    ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION,3); 
    ldap_set_option($ldapconn, LDAP_OPT_REFERRALS,0); 
    $con = ldap_bind($ldapconn, $ldaprdn, $ldappass); 
    if ($con) 
    {     

    $info["cn"] = $_POST['cn']; 
    $info["sn"] = $_POST['sn']; 
    $info["mail"] = $_POST['mail']; 
    $info["objectclass"] = "inetorgperson"; 

    // prepare DN for new entry 
    $dn_aux = "mail=" . $_POST['mail'] . ",ou=usuarios,dc=correo,dc=mx"; 
    $result = ldap_add($ldapconn, $dn_aux, $info); 

    if($result) 
    { 
     echo "New entry with DN " . $dn . " added to LDAP directory."; 
    } 
    // else display error 
    else 
    { 
     echo "An error occurred. Error number " . ldap_errno($conn) . ": " . 
     ldap_err2str(ldap_errno($conn)); 
    } 
    } 
    else 
    { 
    echo "LDAP bind error..."; 
    } 
} 
ldap_close($ldapconn); 
?> 

我走在這LDAP我的第一個步驟,所以請你能詳細介紹一下。

回答

1

不知道正確的PHP語法,但是下面一行:

$dn_aux = "mail=" . $_POST['mail'] . ",ou=usuarios,dc=correo,dc=mx"; 

是不正確有關的活動目錄。解釋是,在這樣的目錄中,您無法選擇用於命名對象的屬性。例如,'InetOrgPerson'對象必須使用CN屬性來命名它。有關更多詳細信息,請參閱Microsoft文檔中的object naming中的carefuly命名屬性。

嘗試:

dn_aux = "CN=" . $_POST['cn'] . ",ou=usuarios,dc=correo,dc=mx"; 
+0

首先,我要感謝大家的聆聽,我有學習化,這和改變指令,你告訴我,但我不能保存用戶,有什麼其他的想法? – samaniego 2012-07-11 21:53:36

+0

你的錯誤仍然是一樣的? – JPBlanc 2012-07-12 03:43:50

+0

你有一個例子[這裏](http://stackoverflow.com/q/5719082/608772) – JPBlanc 2012-07-12 03:55:12