2012-07-09 62 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