0

我正在尝试通过以下代码使用 php 在 Active Directory 中创建一个新用户:

$server = "ldaps://172.16.0.2";
$user = 'someuser'.'@domain.com'; //admin user
$psw = "somepassword"; //admin password

echo "<h2>Mag dagdag ako ng bagong impormasyon</h2>";

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);

$ds =ldap_connect($server,389); 

 ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
 ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

$r=ldap_bind($ds, $user, $psw); 


$info['cn']='trying.hard';
$info['sAMAccountName']='trying.hard';

$info['givenName']='trying';

$info['mail']='trying.hard@domain.com';
$info['sn']='hard';

$dn='OU=CSS,OU=ETC,OU=AdminStaff,OU=MainBldg,OU=CollegeStaff,OU=DoMain,DC=domain,DC=com ';  

$info['objectCategory'] = 'CN=Person,CN=Schema,CN=Configuration,DC=domain,DC=com ';

$info['objectClass'][0]= 'top';
$info['objectClass'][1]= 'person';
$info['objectClass'][2]= 'organizationalPerson';
$info['objectClass'][3]= 'user'; 

$info['useraccountcontrol'] = 66048;

        $newpass = "112345";        
        $newPassword = "\"" . $newpass . "\"";        
        $len = strlen($newPassword);
        $newPassw='';
        for ($i = 0; $i < $len; $i++)
        $newPassw .= "{$newPassword{$i}}\000";        
        $newPassword = $newPassw; 
        $info["unicodepwd"] = $newPassword;    

$a=ldap_add($ds, $dn, $info);

if($a){
    echo "Entry Succesfull!";
}else{
    echo '</br>##-Entry Failed - '. ldap_err2str(ldap_errno($ds)) .' -##';
}
?>

但我收到以下错误

 /*
    Warning: ldap_add(): Add: Server is unwilling to perform in /var/www/ADMS/adduser.php on line 88

    ##-Entry Failed - Server is unwilling to perform -##
    */

谁能帮我解决这个问题?

4

1 回答 1

0

您可以更改此代码:

 $newpass = "112345";        
        $newPassword = "\"" . $newpass . "\"";        
        $len = strlen($newPassword);
        $newPassw='';
        for ($i = 0; $i < $len; $i++)
        $newPassw .= "{$newPassword{$i}}\000";        
        $newPassword = $newPassw; 
        $info["unicodepwd"] = $newPassword; 

有了这个:

$pwdtxt = "112345";
$newPassword = '"' . $pwdtxt . '"';
$newPass = iconv( 'UTF-8', 'UTF-16LE', $newPassword );
$info["unicodepwd"] = $newPassw;
于 2015-10-05T07:14:05.540 回答