php ldap modify,PHP ldap_mod_replace 用法 手册 | 示例代码

chris at mr2madness dot com

You can use arrays for multiple attributes example:

$entry[mail] = array("example@example.com","example2@example.com");$results=ldap_mod_add($ldapConnID,$dn,$entry);?>or as i did for creating anew user:

$adduserAD["objectClass"] = array("top","person","organizationalPerson","user");?>

mike dot rosile at interzonegames dot com

Here is some great information from the OpenLDAP FAQs regarding changing a userPassword attribute with PHP:

$userpassword = "{SHA}" . base64_encode( pack( "H*", sha1( $pass ) ) );

Anonymous

this can not be used to change a password on an AD server that requires you to send the old and new password.

in order to do this use on shuts an sever make an admin-account that allows to change other ppl pw without suppling the old password first.

plex909

Here's an easy way to encode AD "unicodepwd" values from linux...

Then write something like this...

{

returnstr_replace("n","",shell_exec("echo -n '"".$plain_txt_value.""' recode latin1..utf-16le/base64"));

}$user["unicodepwd"] =ADUnicodePwdValue("my_password");?>

[EDITOR thiago NOTE: The following text was sent by boyvanderlaak at gmail dot com as an important complement]

if you do not have access to your linux box but have Multibyte String enabled you could try the following for AD 2008:

$info["unicodePwd"] =mb_convert_encoding('"'.$newPassword.'"','utf-16le');?>

erwann at zeflip dot com

If you do not wish to set up SSL on your active directory, and you are running on Windows, you can use COM and ADSI to set the new password for a user, or to active a user:

// server is the ldap server

// newuser_dn is the full dn of the user you want to modify

// newuser_password is the password you wish to set for the user$ADSI= newCOM("LDAP:");$user=$ADSI->OpenDSObject("LDAP://".$server."/".$newuser_dn,$adminuser,$adminpassword,1);$user->SetPassword($newuser_password);$user->SetInfo();// to activate a user$ADSI= newCOM("LDAP:");$user=$ADSI->OpenDSObject("LDAP://".$server."/".$newuser_dn,$adminuser,$adminpassword,1);$user->AccountDisabled=false;$user->SetInfo();?>

ondrej at sury dot cz

in openldap 2.0.x you can use method with mod_del/mod_add only if the attribute have defined EQUALITY rule.

oyvindmo at initio dot no

ldap_mod_replace() and ldap_modify() are _exactly_ the same.  So, the comment that ldap_mod_replace() "performs the modification at the attribute level as opposed to the object level", has no root in reality.

JoshuaStarr at aelana dot com

To modify an attribute with a single value:

$entry[mail] = "newmail@aelana.com";

$results = ldap_mod_add($ldapConnID,$dn, $entry);

To modify an attribute with multiple values:

$entry[mail][] = "newmail@aelana.com";

$entry[mail][] = "altnewmail@aelana.com";

$results = ldap_mod_add($ldapConnID,$dn, $entry);

To modify multiple attributes

$entry[mail][] = "newmail@aelana.com";

$entry[mail][] = "altnewmail@aelana.com";

$entry      = "US";

$results = ldap_mod_add($ldapConnID,$dn, $entry);

yife at myrice-ltd dot com

if i want to replace the special attribute but i don't replace other attribute ,i just use "ldap_mod_del" and "ldap_mod_add" ,the function seems to that

aaronfulton at softhome dot net

Before you modify values in your ldap directory, first make sure that you have permission to do so.  In openldap adding the following acl in slap.conf will allow the user to modify their own userpassword.

access to attr=userPassword

by self write

by anonymous auth

by * none

dynamik

Using this function to 'replace' an Active Directory password requires the "Reset Password" security permission as opposed to the "Change Password" permission (which is assigned by default to SELF)

frederic dot jacquot at insa-lyon dot fr

Changing a user password in Active Directory.

Securely connect (using ldaps) to the Active Directory and bind using an administrator account.

In this example, $userDn contains the dn of the user I want to modify, and $ad is the Active Directory ldaps connection)

$newPassword = "MyPassword";

$newPassword = """ . $newPassword . """;

$len = strlen($newPassword);

for ($i = 0; $i < $len; $i++)

$newPassw .= "{$newPassword{$i}} 00";

$newPassword = $newPassw;

$userdata["unicodepwd"] = $newPassword;

$result = ldap_mod_replace($ad, $userDn, $userdata);

if ($result) echo "User modified!" ;

else echo "There was a problem!";

I found it hard to get a proper encoding for the unicodepwd attribute so this piece of code might help you ;-)

Anonymous

Sometime,we cannot replace ldap_mod_replace  function  with ldap_mod_del function and ldap_mod_add fuction .We  don't have permission to delete an attribute but  we can replace it.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值